Merge pull request #3398 from henricm/fix-for-test-helpers-symlink
authorMarek Safar <marek.safar@gmail.com>
Fri, 12 Aug 2016 13:55:35 +0000 (15:55 +0200)
committerGitHub <noreply@github.com>
Fri, 12 Aug 2016 13:55:35 +0000 (15:55 +0200)
Removing symlink of TestHelpers.cs

207 files changed:
mcs/build/profiles/xammac.make
mcs/class/Facades/Microsoft.Win32.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.AppContext/AssemblyInfo.cs
mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs
mcs/class/Facades/System.Collections/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.TypeConverter/AssemblyInfo.cs
mcs/class/Facades/System.Data.Common/AssemblyInfo.cs
mcs/class/Facades/System.Data.SqlClient/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.PerformanceCounter/AssemblyInfo.cs [deleted file]
mcs/class/Facades/System.Diagnostics.PerformanceCounter/Facades_System.Diagnostics.PerformanceCounter-net_4_x.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.PerformanceCounter/Makefile [deleted file]
mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter-net_4_x.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter.dll.sources [deleted file]
mcs/class/Facades/System.Diagnostics.PerformanceCounter/TypeForwarders.cs [deleted file]
mcs/class/Facades/System.Diagnostics.Process/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.StackTrace/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.StackTrace/StackFrameExtensions.cs
mcs/class/Facades/System.Diagnostics.Tracing/AssemblyInfo.cs
mcs/class/Facades/System.Drawing.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs
mcs/class/Facades/System.Globalization.Calendars/AssemblyInfo.cs
mcs/class/Facades/System.Globalization.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Globalization/AssemblyInfo.cs
mcs/class/Facades/System.IO.Compression.ZipFile/AssemblyInfo.cs
mcs/class/Facades/System.IO.FileSystem.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.IO.FileSystem/AssemblyInfo.cs
mcs/class/Facades/System.IO.IsolatedStorage/AssemblyInfo.cs
mcs/class/Facades/System.IO.UnmanagedMemoryStream/AssemblyInfo.cs
mcs/class/Facades/System.IO/AssemblyInfo.cs
mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs
mcs/class/Facades/System.Linq/AssemblyInfo.cs
mcs/class/Facades/System.Net.Http.WebRequestHandler/AssemblyInfo.cs [deleted file]
mcs/class/Facades/System.Net.Http.WebRequestHandler/Facades_System.Net.Http.WebRequestHandler-net_4_x.csproj [deleted file]
mcs/class/Facades/System.Net.Http.WebRequestHandler/Makefile [deleted file]
mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler-net_4_x.csproj [deleted file]
mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler.dll.sources [deleted file]
mcs/class/Facades/System.Net.Http.WebRequestHandler/TypeForwarders.cs [deleted file]
mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs
mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs
mcs/class/Facades/System.Net.Sockets/AssemblyInfo.cs
mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs
mcs/class/Facades/System.Reflection.TypeExtensions/AssemblyInfo.cs
mcs/class/Facades/System.Reflection/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs
mcs/class/Facades/System.Runtime/AssemblyInfo.cs
mcs/class/Facades/System.Security.Claims/AssemblyInfo.cs
mcs/class/Facades/System.Security.Cryptography.Algorithms/AssemblyInfo.cs
mcs/class/Facades/System.Security.Cryptography.Algorithms/ECCurve.cs [deleted file]
mcs/class/Facades/System.Security.Cryptography.Algorithms/ECParameters.cs [deleted file]
mcs/class/Facades/System.Security.Cryptography.Algorithms/ECPoint.cs [deleted file]
mcs/class/Facades/System.Security.Cryptography.Algorithms/IncrementalHash.cs [deleted file]
mcs/class/Facades/System.Security.Cryptography.Algorithms/Makefile
mcs/class/Facades/System.Security.Cryptography.Algorithms/System.Security.Cryptography.Algorithms.dll.sources
mcs/class/Facades/System.Security.Cryptography.Algorithms/TypeForwarders.cs
mcs/class/Facades/System.Security.Cryptography.Cng/AssemblyInfo.cs
mcs/class/Facades/System.Security.Cryptography.OpenSsl/ECDsaOpenSsl.cs
mcs/class/Facades/System.Security.Cryptography.OpenSsl/Makefile
mcs/class/Facades/System.Security.Cryptography.OpenSsl/RSAOpenSsl.cs
mcs/class/Facades/System.Security.Cryptography.X509Certificates/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Duplex/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.NetTcp/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Primitives/Makefile
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources
mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs
mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateInitiatorClientCredential_mobile.cs [deleted file]
mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateRecipientClientCredential_mobile.cs [deleted file]
mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidationMode_mobile.cs [deleted file]
mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidator_mobile.cs [deleted file]
mcs/class/Facades/System.ServiceModel.Primitives/X509ServiceCertificateAuthentication_mobile.cs [deleted file]
mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs
mcs/class/Facades/System.ServiceProcess.ServiceController/AssemblyInfo.cs
mcs/class/Facades/System.Text.Encoding.CodePages/AssemblyInfo.cs
mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs
mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs
mcs/class/Facades/System.Threading.Overlapped/AssemblyInfo.cs
mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs
mcs/class/Facades/System.Threading.ThreadPool/AssemblyInfo.cs
mcs/class/Facades/System.Threading/AssemblyInfo.cs
mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XPath.XDocument/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XPath/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XmlDocument/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs
mcs/class/Facades/subdirs.make
mcs/class/Makefile
mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.Apple.cs [new file with mode: 0644]
mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
mcs/class/System.Core/System.IO.Pipes/NamedPipeClientStream.cs
mcs/class/System.Core/System.IO.Pipes/NamedPipeServerStream.cs
mcs/class/System.Core/System.IO.Pipes/PipeStream.cs
mcs/class/System.Core/System.Security.Cryptography/ECCurve.cs [new file with mode: 0644]
mcs/class/System.Core/System.Security.Cryptography/ECParameters.cs [new file with mode: 0644]
mcs/class/System.Core/System.Security.Cryptography/ECPoint.cs [new file with mode: 0644]
mcs/class/System.Core/System.Security.Cryptography/IncrementalHash.cs [new file with mode: 0644]
mcs/class/System.Core/common_System.Core.dll.sources
mcs/class/System.Data/Microsoft.SqlServer.Server/SqlDataRecord.cs
mcs/class/System.Data/Microsoft.SqlServer.Server/SqlMetaData.cs
mcs/class/System.Data/System.Data.SqlClient/SqlBulkCopy.cs
mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs
mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
mcs/class/System.Data/System.Data.SqlClient/SqlException.cs
mcs/class/System.Data/System.Data.SqlClient/SqlParameter.cs
mcs/class/System.IdentityModel/Assembly/AssemblyInfo.cs
mcs/class/System.IdentityModel/Makefile
mcs/class/System.IdentityModel/System.IdentityModel.Selectors/X509CertificateValidator.cs
mcs/class/System.IdentityModel/System.IdentityModel.dll.sources [deleted file]
mcs/class/System.IdentityModel/mobile_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/mobile_static_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/monodroid_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/monotouch_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/monotouch_tv_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/monotouch_watch_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources [new file with mode: 0755]
mcs/class/System.IdentityModel/xammac_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.IdentityModel/xammac_net_4_5_System.IdentityModel.dll.sources [new file with mode: 0644]
mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs
mcs/class/System.ServiceModel/Dummy_2_1.cs
mcs/class/System.ServiceModel/Dummy_XM_4_5.cs
mcs/class/System.ServiceModel/Makefile
mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/SslStreamSecurityBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ClientCredentials.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security/X509CertificateInitiatorClientCredential.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security/X509CertificateRecipientClientCredential.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security/X509ServiceCertificateAuthentication.cs
mcs/class/System.ServiceModel/System.ServiceModel/EndpointAddressBuilder.cs
mcs/class/System.ServiceModel/System.ServiceModel/MessageSecurityOverTcp.cs
mcs/class/System.ServiceModel/System.ServiceModel/TcpTransportSecurity.cs
mcs/class/System.ServiceModel/mobile_System.ServiceModel.dll.sources
mcs/class/System.ServiceModel/xammac_net_4_5_System.ServiceModel.dll.sources
mcs/class/System/Mono.Net.Security/AsyncProtocolRequest.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MobileTlsContext.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs [deleted file]
mcs/class/System/Mono.Net.Security/MonoLegacyTlsProvider.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Apple.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Droid.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.cs
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactoryExt.cs [deleted file]
mcs/class/System/Mono.Net.Security/MonoTlsStream.cs
mcs/class/System/System.Diagnostics/ProcessModuleCollection.cs
mcs/class/System/System.Diagnostics/ProcessThreadCollection.cs
mcs/class/System/System.IO/FileSystemWatcher_mobile.cs
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
mcs/class/System/System.Net.Sockets/TcpClient.cs
mcs/class/System/System.Net.Sockets/UdpClient.cs
mcs/class/System/System.Security.Authentication.ExtendedProtection/ServiceNameCollection.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2Impl.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2ImplMono.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509CertificateImplCollection.cs [new file with mode: 0644]
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Chain.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509ChainStatusFlags.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Store.cs
mcs/class/System/System.dll.sources
mcs/class/System/mobile_System.dll.sources
mcs/class/System/monodroid_System.dll.sources
mcs/class/System/monotouch_System.dll.sources
mcs/class/System/xammac_System.dll.sources
mcs/class/corlib/Microsoft.Win32/RegistryKey.cs
mcs/class/corlib/System.Diagnostics.Tracing/EventAttribute.cs
mcs/class/corlib/System.Diagnostics.Tracing/EventSource.cs
mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs
mcs/class/corlib/System.Security.AccessControl/AuthorizationRuleCollection.cs
mcs/class/corlib/System.Security.AccessControl/CommonSecurityDescriptor.cs
mcs/class/corlib/System.Security.AccessControl/DiscretionaryAcl.cs
mcs/class/corlib/System.Security.AccessControl/ObjectSecurity.cs
mcs/class/corlib/System.Security.AccessControl/SystemAcl.cs
mcs/class/corlib/System.Security.Principal/WindowsIdentity.cs
mcs/class/corlib/System/Console.cs
mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LambdaExpression.cs
mcs/class/referencesource/System.Core/Microsoft/Scripting/Ast/LambdaExpression.cs
mcs/class/referencesource/System.Core/System/Linq/Enumerable.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/CngAlgorithm.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/CngKey.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/CngKeyBlobFormat.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/ECDsa.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/ECDsaCng.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/RsaCng.cs
mcs/class/referencesource/System/net/System/Net/WebHeaderCollection.cs
mcs/class/referencesource/System/regex/system/text/regularexpressions/Regex.cs
mcs/class/referencesource/mscorlib/system/AppContext/AppContext.cs
mcs/tools/corcompare/mono-api-info.cs
mcs/tools/corcompare/mono-api-info.csproj
mono/arch/arm/arm-codegen.h
mono/mini/local-propagation.c
mono/mini/mini-arm.c
mono/mini/mini-runtime.c
mono/mini/mini.h
mono/tests/Makefile.am
mono/tests/constant-division.cs [new file with mode: 0644]
mono/tests/pinvoke3.cs
mono/utils/mono-threads-state-machine.c
mono/utils/mono-threads.c

index 14ffacaa7ab7817cbc2ecf1b6ee7c128129b34ea..50e8214884dfd91c975de9c1071304447aba3db5 100644 (file)
@@ -24,6 +24,7 @@ PROFILE_MCS_FLAGS = \
        -d:XAMMAC \
        -d:FEATURE_INTERCEPTABLE_THREADPOOL_CALLBACK \
        -d:XAMARIN_MODERN \
+       -d:NETSTANDARD \
        -nowarn:1699 \
        -nostdlib \
        $(DEFAULT_REFERENCES) \
index d532b594d019d8f966955a4406830b5137ab1582..1a8f5f3639da7e710d532578334e1e3ce298adec 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index d7f216e5295fb61152e1a43f65b03940434e4271..cb5e8dddf4f8a4c3479705dd9c5706e3fba1c62a 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index b14058779a3979974b495d28df8da421532a644e..62428f4889c55a0a1b23a8b210045bc18f2c0c5b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index e3f037ff8e8a96531cf2924b4351e213ea6af872..bf3b05e922a658e12962357c86ec4f39975db471 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 3ea660a30b05e23a78602e51ad45d6602851e6d4..ef0c419a2de3c2ef0c5721a4416cc40fa0dadc62 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 02d9d9307f400b9ad46f90956ece6e2788bb9363..e35600650b32de5949a0242e87cf1f5663098b42 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 4b1c3bcd4730a72abfe225156d2097ea7fb94c5b..7a73d9b9a904e7fa8f2bf1d55e88ceb40c4a6b28 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 63868e4ced15608cd990bcbc0850f6c139465664..40ca18905323384086d49875d8b006ee59e9c82c 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 1a9838800a0a177c0f86a230ad393f701528f2b6..337997163750b0ca26544b4980dfabf739480676 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index ca9dc4b0ac2a510c1350f1e871c178a0ea6c0364..95aeb6c229e98ffa800c85f48987d38e73528a2c 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index a7cbf21727b35a7c92446a5489227658fa9efb56..b13006f5a5bcddff4eb89fa69e18a59877ce20b8 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/AssemblyInfo.cs
deleted file mode 100644 (file)
index b995757..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle ("System.Diagnostics.PerformanceCounter.dll")]
-[assembly: AssemblyDescription ("System.Diagnostics.PerformanceCounter.dll")]
-[assembly: AssemblyDefaultAlias ("System.Diagnostics.PerformanceCounter.dll")]
-[assembly: AssemblyCompany ("Xamarin, Inc.")]
-[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
-[assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
-[assembly: AssemblyInformationalVersion ("4.0.0.0")]
-[assembly: AssemblyFileVersion ("4.0.0.0")]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../../msfinal.pub")]
-
-[assembly: ReferenceAssembly]
-
-
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/Facades_System.Diagnostics.PerformanceCounter-net_4_x.csproj b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/Facades_System.Diagnostics.PerformanceCounter-net_4_x.csproj
deleted file mode 100644 (file)
index a9534e3..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BA0C64F1-3762-437D-8B58-75F68A5B4E7E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_x/Facades</OutputPath>\r
-    <IntermediateOutputPath>obj-Facades</IntermediateOutputPath>\r
-    <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>\r
-    <NoStdLib>True</NoStdLib>\r
-    \r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.PerformanceCounter</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_x.csproj">\r
-      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
-      <Name>System-net_4_x</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/Makefile b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/Makefile
deleted file mode 100644 (file)
index beda860..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-MCS_BUILD_DIR = ../../../build
-
-thisdir = class/Facades/System.Diagnostics.PerformanceCounter
-SUBDIRS = 
-include $(MCS_BUILD_DIR)/rules.make
-
-LIBRARY_SUBDIR = Facades
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
-
-LIBRARY = System.Diagnostics.PerformanceCounter.dll
-
-KEY_FILE = ../../msfinal.pub
-SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System
-LIB_MCS_FLAGS = $(SIGN_FLAGS) 
-
-PLATFORM_DEBUG_FLAGS =
-
-NO_TEST = yes
-
-include $(MCS_BUILD_DIR)/library.make
-
-
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter-net_4_x.csproj b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter-net_4_x.csproj
deleted file mode 100644 (file)
index eece2c3..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9E33CC1D-9BB9-49CC-8B9E-E2F5807623AB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_x/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.PerformanceCounter</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_x.csproj">\r
-      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
-      <Name>System-net_4_x</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter.dll.sources b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/System.Diagnostics.PerformanceCounter.dll.sources
deleted file mode 100644 (file)
index 8e33d4d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TypeForwarders.cs
-AssemblyInfo.cs
-
diff --git a/mcs/class/Facades/System.Diagnostics.PerformanceCounter/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.PerformanceCounter/TypeForwarders.cs
deleted file mode 100644 (file)
index 12bef0d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.CounterSample))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.PerformanceCounter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.PerformanceCounterInstanceLifetime))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.PerformanceCounterType))]
-
-
index d5aafde47ab0588de4c5ae0cdc48926a6561c4d6..df4fbcedeb75363fa05a00a7436b689dff0e6195 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index ae2f9e024318db1d6fffe33bde0bfc4f14dda3ff..6e220091dd10a303b154be3e2ab1e307425e9313 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 1fb375f6fa6bffcfcfe30df5f768aba71dc91945..7f6a474ab61d72bde71cbe01dadab76dc151849b 100644 (file)
@@ -34,6 +34,18 @@ namespace System.Diagnostics
 {
        public static class StackFrameExtensions
        {
+               [MonoTODO]
+               public static IntPtr GetNativeImageBase (this StackFrame stackFrame)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static IntPtr GetNativeIP (this StackFrame stackFrame)
+               {
+                       throw new NotImplementedException ();
+               }
+
                [MonoTODO]
                public static bool HasNativeImage (this StackFrame stackFrame)
                {
index f13ffdd5bb9476dfe1fe9bb91d32e9c37c45a564..8a44f5c464cbe84d30a3bf677e8e2b3913665a19 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index fd9a20bfefc1b684b04b87557ee0010850f04ef4..626ecde842785b03ebec362245cf0fc929fb6204 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index e64d545b785de25a5dd5f6e51a6f8330ca598c64..316522d2a60dd010ef30103fe07780c0192e820b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 153def5e438c3f53c775288d61d383fddcb3e04b..161b841ea121def4e3b77db78eec2f09d63d3646 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 56f78895962357e3691af77cd808800d389ad690..6c41c6e4f3606f2a02c499b6685f007e40aff024 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 9db0473f4f1813015c3f189715ea46d4615e1f61..84c06894f1182bb9d23a3006361f43b24dc8996b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 76004988b8c17b20ffa2a7571b0951d2ab871bbc..8631ba251a77a3472499bc64fb47f3c881514be1 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index ce31ea4d28dc1c637686a6db8100a1e6425bda7e..9239b2432ebdc3d78bde05b297b53dfd6ed655ce 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 6c8e98325432c20e9b32ee58a50cc676b4b5ffc3..2ad36d313aed4061e63d545dfa56e45ef8e5cb94 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index fd84746986ac0a2261c5f1537a5f705566b68378..2ccf0e841b768a6f2cc9a8851dce11bf8297f3e0 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 9f7e2b9d1df794ffea952cbb5c907d3f8e40595d..3ddd97f50a5960cfa10bd2f68b943e842b1efb9e 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 6b5b23d878ff19152ba757102d47b57b63764863..4bfc1f54650133598edd4ac0e92f076f10946f7a 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index de01cb447b621dc50a27d4785d15327ca771679a..5169c566782477345483c5b9d3fe566c653bd8d8 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index e654d85a44b9de331356f73a62c1ddcfdaac9a02..0f16e3c07f6086086bef39702eac1b54034ca6ec 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/AssemblyInfo.cs b/mcs/class/Facades/System.Net.Http.WebRequestHandler/AssemblyInfo.cs
deleted file mode 100644 (file)
index dc2e630..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle ("System.Net.Http.WebRequestHandler.dll")]
-[assembly: AssemblyDescription ("System.Net.Http.WebRequestHandler.dll")]
-[assembly: AssemblyDefaultAlias ("System.Net.Http.WebRequestHandler.dll")]
-[assembly: AssemblyCompany ("Xamarin, Inc.")]
-[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
-[assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
-[assembly: AssemblyInformationalVersion ("4.0.0.0")]
-[assembly: AssemblyFileVersion ("4.0.0.0")]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../../msfinal.pub")]
-
-[assembly: ReferenceAssembly]
-
-
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/Facades_System.Net.Http.WebRequestHandler-net_4_x.csproj b/mcs/class/Facades/System.Net.Http.WebRequestHandler/Facades_System.Net.Http.WebRequestHandler-net_4_x.csproj
deleted file mode 100644 (file)
index c49aa56..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ACA10642-1D5B-443D-99BE-65C31491C54F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_x/Facades</OutputPath>\r
-    <IntermediateOutputPath>obj-Facades</IntermediateOutputPath>\r
-    <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>\r
-    <NoStdLib>True</NoStdLib>\r
-    \r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http.WebRequestHandler</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_x.csproj">\r
-      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
-      <Name>System-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_x.csproj">\r
-      <Project>{A98B5CC3-EAFC-4EFD-ABC6-2F2A65BE98F5}</Project>\r
-      <Name>System.Net.Http.WebRequest-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Net.Http/System.Net.Http-net_4_x.csproj">\r
-      <Project>{F1636C0A-FC68-4362-918F-9CCC789FED13}</Project>\r
-      <Name>System.Net.Http-net_4_x</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/Makefile b/mcs/class/Facades/System.Net.Http.WebRequestHandler/Makefile
deleted file mode 100644 (file)
index 7750bba..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-MCS_BUILD_DIR = ../../../build
-
-thisdir = class/Facades/System.Net.Http.WebRequestHandler
-SUBDIRS = 
-include $(MCS_BUILD_DIR)/rules.make
-
-LIBRARY_SUBDIR = Facades
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
-
-LIBRARY = System.Net.Http.WebRequestHandler.dll
-
-KEY_FILE = ../../msfinal.pub
-SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System System.Net.Http.WebRequest System.Net.Http
-LIB_MCS_FLAGS = $(SIGN_FLAGS)
-
-PLATFORM_DEBUG_FLAGS =
-
-NO_TEST = yes
-
-include $(MCS_BUILD_DIR)/library.make
-
-
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler-net_4_x.csproj b/mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler-net_4_x.csproj
deleted file mode 100644 (file)
index 7d3ac50..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D539B499-390E-4648-9683-EDD787C36928}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_x/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http.WebRequestHandler</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_x.csproj">\r
-      <Project>{A98B5CC3-EAFC-4EFD-ABC6-2F2A65BE98F5}</Project>\r
-      <Name>System.Net.Http.WebRequest-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Net.Http/System.Net.Http-net_4_x.csproj">\r
-      <Project>{F1636C0A-FC68-4362-918F-9CCC789FED13}</Project>\r
-      <Name>System.Net.Http-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_x.csproj">\r
-      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
-      <Name>System-net_4_x</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler.dll.sources b/mcs/class/Facades/System.Net.Http.WebRequestHandler/System.Net.Http.WebRequestHandler.dll.sources
deleted file mode 100644 (file)
index 8e33d4d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TypeForwarders.cs
-AssemblyInfo.cs
-
diff --git a/mcs/class/Facades/System.Net.Http.WebRequestHandler/TypeForwarders.cs b/mcs/class/Facades/System.Net.Http.WebRequestHandler/TypeForwarders.cs
deleted file mode 100644 (file)
index fb583ab..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.Http.WebRequestHandler))]
-
-
index 4f5c9c1b6d021ee98a69a781a30ac1957dbf6ab3..8bb82be686611a16a9d9041608e14735e639a502 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 43418d0fb7860847b3860039d439d2a511671530..8479946f21e4b894c7cb111293f8ba911393cf90 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 771473695cc1ef24e3d80ff717dad09594ed89bd..32162844983065dbf83c34dc6c806f980804d232 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 33d399e8f5beb0a664be79e88c8a6fab215b4777..1ea7a8cca477aac56d7222ec2b3291990524f271 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 1eac48ac27c9c0a54e35467927ac40d58ad4a110..189175bb52c840f1d28e728644a09845bc6f80df 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index f431e75d5dc93af75242a340e356c3f45c30cfa8..120da41f2a29f911f0a0632b35cb6ed7359dfc48 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 36520e0b758e7a229c37649a4aa0311d33565154..00f07f8d343aec184102fc16cd6f60498a485cbb 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index f3163e0d806175083fe3688a7546ff2b61997081..37f003529ac03b9133858ba2632d820a2642ffed 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 25b7d0a0538d62eca48b3064cc3caea26cd0f499..9c17934bb4abdbefa23b4ddf311daa10e9f6a70d 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index c76790eaf0e9241aa9c8f2499cc217e12248b63e..09c00ba397e9c1434459458db7d74a257841bce7 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index f88da3f3a599ab895c956793ad2adc2146a012ca..e64a8fe3440469251669c5841f2d99852480b81b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 359e2334b7eae03452305e087669750f691224ae..1a9717ec41a0f6a016253d5da0113c81f46429b6 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index ec3ca1a2f960756ac4559072a961f6effad3a50f..d697b7398486bf4ab02618a17031a807b4b31867 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 76645c38108178a1239b982255c98549923e67fe..232d6f79a1f4e44034180edfe4e9ce70c8f3cbb0 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECCurve.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECCurve.cs
deleted file mode 100644 (file)
index 3e1733e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// ECCurve.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography
-{
-       [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-       public struct ECCurve
-       {
-               public byte[] A;
-               public byte[] B;
-               public byte[] Cofactor;
-               public ECCurveType CurveType;
-               public ECPoint G;
-               public HashAlgorithmName? Hash;
-               public byte[] Order;
-               public byte[] Polynomial;
-               public byte[] Prime;
-               public byte[] Seed;
-               public bool IsCharacteristic2 { get { throw new NotImplementedException (); } }
-               public bool IsExplicit { get { throw new NotImplementedException (); } }
-               public bool IsNamed { get { throw new NotImplementedException (); } }
-               public bool IsPrime { get { throw new NotImplementedException (); } }
-               public Oid Oid { get { throw new NotImplementedException (); } }
-               public static ECCurve CreateFromFriendlyName (string oidFriendlyName) { throw new NotImplementedException (); }
-               public static ECCurve CreateFromOid (Oid curveOid) { throw new NotImplementedException (); }
-               public static ECCurve CreateFromValue (string oidValue) { throw new NotImplementedException (); }
-               public void Validate () { throw new NotImplementedException (); }
-
-               public enum ECCurveType
-               {
-                       Implicit = 0,
-                       PrimeShortWeierstrass = 1,
-                       PrimeTwistedEdwards = 2,
-                       PrimeMontgomery = 3,
-                       Characteristic2 = 4,
-                       Named = 5,
-               }
-               
-               public static class NamedCurves
-               {
-                       public static ECCurve brainpoolP160r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP160t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP192r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP192t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP224r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP224t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP256r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP256t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP320r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP320t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP384r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP384t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP512r1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve brainpoolP512t1 { get { throw new NotImplementedException (); } }
-                       public static ECCurve nistP256 { get { throw new NotImplementedException (); } }
-                       public static ECCurve nistP384 { get { throw new NotImplementedException (); } }
-                       public static ECCurve nistP521 { get { throw new NotImplementedException (); } }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECParameters.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECParameters.cs
deleted file mode 100644 (file)
index 6f1e421..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// ECPArameters.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography
-{
-    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-    public partial struct ECParameters
-    {
-        public ECCurve Curve;
-        public byte[] D;
-        public ECPoint Q;
-        public void Validate () { throw new NotImplementedException (); }
-    }
-}
\ No newline at end of file
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECPoint.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/ECPoint.cs
deleted file mode 100644 (file)
index 5693959..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ECPoint.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography
-{
-       [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-       public struct ECPoint
-       {
-               public byte[] X;
-               public byte[] Y;
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/IncrementalHash.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/IncrementalHash.cs
deleted file mode 100644 (file)
index 7b39b0d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// IncrementalHash.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography
-{
-    public sealed class IncrementalHash : IDisposable
-    {
-        private IncrementalHash () { }
-        public HashAlgorithmName AlgorithmName { get { throw new NotImplementedException (); } }
-        public void AppendData (byte[] data) { }
-        public void AppendData (byte[] data, int offset, int count) { }
-        public static IncrementalHash CreateHash (HashAlgorithmName hashAlgorithm) { throw new NotImplementedException (); }
-        public static IncrementalHash CreateHMAC (HashAlgorithmName hashAlgorithm, byte[] key) { throw new NotImplementedException (); }
-        public void Dispose () { }
-        public byte[] GetHashAndReset () { throw new NotImplementedException (); }
-    }
-}
\ No newline at end of file
index e65ee83c7ab30a2f44656292ed9f44752a5c7e76..389a11cf6cf8d9fa9e39ee2c4fb4774bc2492247 100644 (file)
@@ -14,6 +14,8 @@ SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
 LIB_REFS = System System.Core
 LIB_MCS_FLAGS = $(SIGN_FLAGS)
 
+PLATFORM_DEBUG_FLAGS =
+
 NO_TEST = yes
 
 include $(MCS_BUILD_DIR)/library.make
index 5a59369bd4fde73415c3cf317486617279b256e7..167626a697ef69495185a9630a8e8eaf5814e7e8 100644 (file)
@@ -43,4 +43,7 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SHA512))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.TripleDES))]
 
-
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.ECCurve))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.ECParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.ECPoint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.IncrementalHash))]
index b902325fdefcca5de1e5ea933ba62ebd30104080..db3aaf3b2571ec5d191d7f142b3f4ba7bf8ddba9 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 1a2771a4f36837fd95028ca3859fffdeae7885a8..a96ed9ff97dd0f07c8243faa6159f1d945da731d 100644 (file)
@@ -30,6 +30,31 @@ namespace System.Security.Cryptography
 {
        public sealed class ECDsaOpenSsl : ECDsa
        {
+               public ECDsaOpenSsl ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ECDsaOpenSsl (int keySize)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ECDsaOpenSsl(IntPtr handle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ECDsaOpenSsl (ECCurve curve)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ECDsaOpenSsl (SafeEvpPKeyHandle pkeyHandle)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public override byte[] SignHash (byte[] hash)
                {
                        throw new NotImplementedException ();
@@ -40,6 +65,9 @@ namespace System.Security.Cryptography
                        throw new NotImplementedException ();
                }
 
-               // TODO: Implement full contract API
+               public SafeEvpPKeyHandle DuplicateKeyHandle ()
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
\ No newline at end of file
index 16bae2df174a282a1cf8fa44b26fca8819a1ad21..dd0cdefc6f58c0e3299ff36b06f6b80ad7606dcc 100644 (file)
@@ -11,7 +11,7 @@ LIBRARY = System.Security.Cryptography.OpenSsl.dll
 
 KEY_FILE = ../../msfinal.pub
 SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System.Core
+LIB_REFS = System.Core Facades/System.Security.Cryptography.Algorithms
 LIB_MCS_FLAGS = $(SIGN_FLAGS)
 
 NO_TEST = yes
index 4bdcd80917c7dfd960bc5bd32b1b094386635bdb..d00e2b8b1e0a7aa52bfe598f9da6a5eab4ebc2a9 100644 (file)
@@ -30,6 +30,36 @@ namespace System.Security.Cryptography
 {
        public sealed class RSAOpenSsl : RSA
        {
+               public RSAOpenSsl ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public RSAOpenSsl (int keySize)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public RSAOpenSsl(IntPtr handle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public RSAOpenSsl (ECCurve curve)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public RSAOpenSsl (RSAParameters parameters)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public RSAOpenSsl (SafeEvpPKeyHandle pkeyHandle)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public override RSAParameters ExportParameters (bool includePrivateParameters)
                {
                        throw new NotImplementedException ();
@@ -50,6 +80,9 @@ namespace System.Security.Cryptography
                        throw new NotImplementedException ();
                }
 
-               // TODO: Implement full contract API
+               public SafeEvpPKeyHandle DuplicateKeyHandle ()
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
\ No newline at end of file
index 1f49a7b03b9b97a8ca64a78b6c1a2bdc31509c19..011b275a6120d9460542e85b0dbc587dcb4d62b8 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 2dc616e75c1f72b42c09c98c24ade79e84f721d3..38f58e9d151a7c5d9b117139e3807d6062cc3bae 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 2dc616e75c1f72b42c09c98c24ade79e84f721d3..1d34f0634034e3b9cca0ccc14159c1aa77316d2c 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 2dc616e75c1f72b42c09c98c24ade79e84f721d3..1d34f0634034e3b9cca0ccc14159c1aa77316d2c 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 02bec1d5c48637196cd805d898f582fead3b6dc8..c982bbe4f3d50c2914f289042c0218b6d7a762e9 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 3c12456831dcfa7317f2aff4f559a6628a26463a..dde66a181cf7cce8a18898e4fcec87e71c5ca3bd 100644 (file)
@@ -11,14 +11,12 @@ LIBRARY = System.ServiceModel.Primitives.dll
 
 KEY_FILE = ../../msfinal.pub
 SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System System.ServiceModel System.Xml Facades/System.Security.Cryptography.X509Certificates
-
-ifneq (2.1, $(FRAMEWORK_VERSION))
-LIB_REFS += System.IdentityModel
-endif
+LIB_REFS = System System.ServiceModel System.Xml System.IdentityModel Facades/System.Security.Cryptography.X509Certificates
 
 LIB_MCS_FLAGS = $(SIGN_FLAGS) 
 
+PLATFORM_DEBUG_FLAGS =
+
 NO_TEST = yes
 
 include $(MCS_BUILD_DIR)/library.make
index f43e364288ecdfe39cf6ad30ee2590de8b775429..719628dc7c61ac7d0444434320134bf5305b7f73 100644 (file)
@@ -1,9 +1,2 @@
 TypeForwarders.cs
 AssemblyInfo.cs
-
-../../../build/common/MonoTODOAttribute.cs
-X509ServiceCertificateAuthentication_mobile.cs
-X509CertificateValidator_mobile.cs
-X509CertificateValidationMode_mobile.cs
-X509CertificateRecipientClientCredential_mobile.cs
-X509CertificateInitiatorClientCredential_mobile.cs
index b584fc0b8ee576cb82de3adc696344b0ee063b26..3be79604b4df5ab03f5afe7079cd14fcbbb48137 100644 (file)
@@ -20,6 +20,7 @@
 // THE SOFTWARE.
 // 
 
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IdentityModel.Selectors.X509CertificateValidator))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ActionNotSupportedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.WindowsClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509ServiceCertificateAuthentication))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateInitiatorClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateRecipientClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateValidationMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SecurityMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServerTooBusyException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceActivationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UnknownMessageReceivedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
-
-#if !MOBILE && !XAMMAC_4_5
-
-// TODO: These are implemented as stubs in the facade directly on mobile (contrary to Desktop where they're forwarded to System.ServiceModel.dll/System.IdentityModel.dll).
-// I'm not 100% sure this is the right approach, but Marek thinks it's fine so I'm sticking with it for now.
-// The problem on mobile is that types like X509CertificateValidator live in System.IdentityModel.dll which is not built for mobile.
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IdentityModel.Selectors.X509CertificateValidator))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateValidationMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509ServiceCertificateAuthentication))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateInitiatorClientCredential))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509CertificateRecipientClientCredential))]
-
-#endif
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateInitiatorClientCredential_mobile.cs b/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateInitiatorClientCredential_mobile.cs
deleted file mode 100644 (file)
index daf321c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// X509CertificateInitiatorClientCredential_mobile.cs
-//
-// Author:
-//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
-//
-// (C) 2016 Xamarin, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if MOBILE || XAMMAC_4_5
-
-using System.Security.Cryptography.X509Certificates;
-
-namespace System.ServiceModel.Security
-{
-       public sealed class X509CertificateInitiatorClientCredential
-       {
-               [MonoTODO]
-               public X509Certificate2 Certificate
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               internal X509CertificateInitiatorClientCredential()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetCertificate(StoreLocation storeLocation, StoreName storeName, X509FindType findType, object findValue)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetCertificate(string subjectName, StoreLocation storeLocation, StoreName storeName)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateRecipientClientCredential_mobile.cs b/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateRecipientClientCredential_mobile.cs
deleted file mode 100644 (file)
index 3545b72..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// X509CertificateRecipientClientCredential_mobile.cs
-//
-// Author:
-//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
-//
-// (C) 2016 Xamarin, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if MOBILE || XAMMAC_4_5
-
-using System;
-using System.Collections.Generic;
-using System.Security.Cryptography.X509Certificates;
-
-namespace System.ServiceModel.Security
-{
-       public sealed class X509CertificateRecipientClientCredential
-       {
-               [MonoTODO]
-               public X509ServiceCertificateAuthentication Authentication
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public X509Certificate2 DefaultCertificate
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public Dictionary<Uri, X509Certificate2> ScopedCertificates
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public X509ServiceCertificateAuthentication SslCertificateAuthentication
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               internal X509CertificateRecipientClientCredential ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetDefaultCertificate(StoreLocation storeLocation, StoreName storeName, X509FindType findType, object findValue)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetDefaultCertificate(string subjectName, StoreLocation storeLocation, StoreName storeName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetScopedCertificate(StoreLocation storeLocation, StoreName storeName, X509FindType findType, object findValue, Uri targetService)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void SetScopedCertificate(string subjectName, StoreLocation storeLocation, StoreName storeName, Uri targetService)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidationMode_mobile.cs b/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidationMode_mobile.cs
deleted file mode 100644 (file)
index 34b1d24..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// X509CertificateValidationMode_mobile.cs
-//
-// Author:
-//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
-//
-// (C) 2016 Xamarin, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if MOBILE || XAMMAC_4_5
-
-namespace System.ServiceModel.Security
-{
-       public enum X509CertificateValidationMode
-       {
-               None,
-               PeerTrust,
-               ChainTrust,
-               PeerOrChainTrust,
-               Custom
-       }
-}
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidator_mobile.cs b/mcs/class/Facades/System.ServiceModel.Primitives/X509CertificateValidator_mobile.cs
deleted file mode 100644 (file)
index 734e990..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// X509CertificateValidator_mobile.cs
-//
-// Author:
-//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
-//
-// (C) 2016 Xamarin, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if MOBILE || XAMMAC_4_5
-
-using System.Security.Cryptography.X509Certificates;
-
-namespace System.IdentityModel.Selectors
-{
-       public abstract class X509CertificateValidator
-       {
-               public abstract void Validate (X509Certificate2 certificate);
-       }
-}
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/X509ServiceCertificateAuthentication_mobile.cs b/mcs/class/Facades/System.ServiceModel.Primitives/X509ServiceCertificateAuthentication_mobile.cs
deleted file mode 100644 (file)
index 725cbd9..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// X509ServiceCertificateAuthentication_mobile.cs
-//
-// Author:
-//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
-//
-// (C) 2016 Xamarin, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if MOBILE || XAMMAC_4_5
-
-using System;
-using System.IdentityModel.Selectors;
-using System.Security.Cryptography.X509Certificates;
-
-namespace System.ServiceModel.Security
-{
-       public sealed class X509ServiceCertificateAuthentication
-       {
-               [MonoTODO]
-               public X509CertificateValidationMode CertificateValidationMode
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public X509CertificateValidator CustomCertificateValidator
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public X509RevocationMode RevocationMode
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public StoreLocation TrustedStoreLocation
-               {
-                       get
-                       {
-                               throw new NotImplementedException ();
-                       }
-                       set
-                       {
-                               throw new NotImplementedException ();
-                       }
-               }
-       }
-}
-
-#endif
\ No newline at end of file
index f222e8b656d5ab5233cfc6cf196ac54693e08c5a..1195365cf2cc17e22419e08d5f0be6c63afe6e4c 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 0a10348eeb6c75dc17aa141dcf7f769b20fee2b9..67306cb4adedbad82f74260a6d4bf9eded7979a0 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 568942dca1426b1a064f4fb9a181120da2f5b69f..3a26f0dca9c2008a2461dc1fb8f5f8e9cd720390 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 33c51e01878ff1e4ee677e3924ffbd7ae724d27b..80d5a5f15e9c0bbe7228ea4050d1df9db96ff51b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index ff006b094f959d4f4ce97e4db8ce5f4e549c5e2d..4ff5799c82fc5579f2f7594624abf6a9016dab6b 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 41f882f463e9d07feb2a500b4ea17b8db72ce102..8ad5d918c2008f89e3e7c1e9197d042cb1aa4739 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 37bca06c0140322bfbb286d52ef7d40feb97ca40..e6621486d749b5961c73967284fa1ae518ef3085 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index b4b38c47067de161789da0bfd5d62113831b3e84..7ba876ff82e40ea81c7d6402e6cf932b19c37432 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 44825c052e1a81e30deb812d10da91ea31de2e49..d10a02fae3087e4296928625186b7001f5db9f75 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index c68b68a0939e75137a99a268e6d944d2e3ca93a8..9659d44288825364d8d11cea22c4184a5c9580f9 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index d05105115559fa4e61d3ed60b41438ef3e8a9ef5..80c8d3a2bb463e92fa8487181b1b5dd4478edf9d 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index bd6476be5237c6c54e0fbf8747837f1f2b6da629..f3780608d8a87daea8da6b1714e9de66218bd271 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 26f4eb8081cbab730565330f78b6cead36102277..6086ef6f44cc5a44dc2c371081f834f363e3fc67 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 1a93dd240ed6e4e381b138214b8c2cb8cddd84f6..c141099a7bea24f75ed28ae1407e352a1b32fef7 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index f83abebce26e70fb5f931fac065cce3375a17e33..b9722fd4a4d89d611b0e0fec56178f0629c4075d 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.1.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 71235d79b0ba499725ab4648edc4cfacffde4b21..64b18fd19cdff0c0496da8559371b358bef0c606 100644 (file)
@@ -30,7 +30,7 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.10.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
index 65b30b9e8ec3af755be515c4e2e5d8bd4c1259db..df1dd020404535839b69b35be715b25cdb7a9275 100644 (file)
@@ -26,7 +26,7 @@ System.Security.Principal.Windows System.Threading.Thread System.Threading.Threa
 System.Xml.XPath System.Xml.XmlDocument System.Xml.Xsl.Primitives Microsoft.Win32.Registry.AccessControl System.Diagnostics.StackTrace System.Globalization.Extensions \
 System.IO.FileSystem.AccessControl System.Private.CoreLib.InteropServices System.Reflection.TypeExtensions \
 System.Security.SecureString System.Threading.AccessControl System.Threading.Overlapped System.Xml.XPath.XDocument \
-System.Security.Cryptography.Algorithms System.Security.Cryptography.Primitives System.Text.Encoding.CodePages System.IO.FileSystem.Watcher \
+System.Security.Cryptography.Primitives System.Text.Encoding.CodePages System.IO.FileSystem.Watcher \
 System.Security.Cryptography.ProtectedData System.ServiceProcess.ServiceController System.IO.Pipes
 
 # common_SUBDIRS dependencies
@@ -36,15 +36,14 @@ drawing_DEPS_SUBDIRS = System.Drawing.Primitives
 
 reflection_PARALLEL_SUBDIRS = System.Reflection.Emit.ILGeneration System.Reflection.Emit.Lightweight System.Reflection.Emit
 
-monotouch_SUBDIRS = $(common_DEPS_SUBDIRS)
+monotouch_SUBDIRS = $(common_DEPS_SUBDIRS) $(mobile_only_DEPS_SUBDIRS)
 monotouch_PARALLEL_SUBDIRS = $(common_SUBDIRS) $(mobile_only_SUBDIRS)
 
 mobile_static_SUBDIRS = $(monotouch_SUBDIRS)
 mobile_static_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
 
 net_4_x_SUBDIRS = $(common_DEPS_SUBDIRS) $(drawing_DEPS_SUBDIRS)
-net_4_x_PARALLEL_SUBDIRS = $(common_SUBDIRS) $(reflection_PARALLEL_SUBDIRS) System.Diagnostics.PerformanceCounter \
-System.Net.Http.WebRequestHandler
+net_4_x_PARALLEL_SUBDIRS = $(common_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
 
 monodroid_SUBDIRS = $(monotouch_SUBDIRS)
 monodroid_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
@@ -62,6 +61,8 @@ monotouch_tv_SUBDIRS = $(monotouch_SUBDIRS)
 monotouch_tv_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
 
 mobile_only_SUBDIRS = System.Net.Ping System.Runtime.Serialization.Formatters System.Security.Cryptography.Csp System.Security.Cryptography.Pkcs \
-System.Security.Cryptography.Cng System.Security.Cryptography.OpenSsl
+System.Security.Cryptography.Cng
+
+mobile_only_DEPS_SUBDIRS = System.Security.Cryptography.Algorithms System.Security.Cryptography.OpenSsl
 
 PROFILE_PARALLEL_SUBDIRS = $(net_4_x_PARALLEL_SUBDIRS)
index 8e746d7f6e7e1db4a2a763cfb34ffb4603e1c1b0..8347d9f2d30e364ccbf759bc3a71e7916c62dd52 100644 (file)
@@ -29,6 +29,7 @@ mobile_common_dirs := \
        System.ServiceModel.Internals   \
        System.Runtime.Serialization    \
        System.Xml.Linq \
+       System.IdentityModel            \
        System.ServiceModel     \
        System.ServiceModel.Web \
        System.Json     \
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.Apple.cs b/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.Apple.cs
new file mode 100644 (file)
index 0000000..d77e723
--- /dev/null
@@ -0,0 +1,9 @@
+namespace Mono.Security.Interface
+{
+       delegate MonoTlsProvider MonoTlsProviderFactoryDelegate ();
+
+       static partial class MonoTlsProviderFactory
+       {
+               internal static MonoTlsProviderFactoryDelegate _PrivateFactoryDelegate;
+       }
+}
index 5bba4d9209b21555441b2a1620e3efbd62864ca5..18bfca4934c79d7c257bd8a1f4f0451049da4e7b 100644 (file)
@@ -182,6 +182,31 @@ namespace System.IO.MemoryMappedFiles
                        };
                }
 
+               public static MemoryMappedFile CreateFromFile (FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access,
+                                                              HandleInheritability inheritability,
+                                                              bool leaveOpen)
+               {
+                       if (fileStream == null)
+                               throw new ArgumentNullException ("fileStream");
+                       if (mapName != null && mapName.Length == 0)
+                               throw new ArgumentException ("mapName");
+                       if ((!MonoUtil.IsUnix && capacity == 0 && fileStream.Length == 0) || (capacity > fileStream.Length))
+                               throw new ArgumentException ("capacity");
+
+                       IntPtr handle = MemoryMapImpl.OpenHandle (fileStream.Handle, mapName, out capacity, access, MemoryMappedFileOptions.DelayAllocatePages);
+                       
+                       MemoryMapImpl.ConfigureHandleInheritability (handle, inheritability);
+                               
+                       return new MemoryMappedFile () {
+                               handle = handle,
+                               fileAccess = access,
+                               name = mapName,
+                               fileCapacity = capacity,
+
+                               stream = fileStream,
+                               keepOpen = leaveOpen
+                       };
+               }
 
                [MonoLimitation ("memoryMappedFileSecurity is currently ignored")]
                public static MemoryMappedFile CreateFromFile (FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access,
@@ -242,6 +267,12 @@ namespace System.IO.MemoryMappedFiles
                        return CreateNew (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, null, HandleInheritability.None);
                }
 
+               [MonoLimitation ("Named mappings scope is process local; options is ignored")]
+               public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability)
+               {
+                       return CreateNew (mapName, capacity, access, options, null, inheritability);
+               }
+
                [MonoLimitation ("Named mappings scope is process local; options and memoryMappedFileSecurity are ignored")]
                public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access,
                                                          MemoryMappedFileOptions options, MemoryMappedFileSecurity memoryMappedFileSecurity,
@@ -262,6 +293,12 @@ namespace System.IO.MemoryMappedFiles
                        return CreateOrOpen (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, null, HandleInheritability.None);
                }
 
+               [MonoLimitation ("Named mappings scope is process local")]
+               public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability)
+               {
+                       return CreateOrOpen (mapName, capacity, access, options, null, inheritability);
+               }
+
                [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, MemoryMappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability)
                {
index 181ab1ccbf0b44cd4f14ca719e5f49d71f498647..a5a9ebd3fbc698acd1801824f8ac2d37fc21ab3b 100644 (file)
@@ -37,6 +37,8 @@ using System.Security.AccessControl;
 using System.Security.Permissions;
 using System.Security.Principal;
 using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
 using Microsoft.Win32;
 using Microsoft.Win32.SafeHandles;
 
@@ -113,6 +115,10 @@ namespace System.IO.Pipes
                }
 #endif
 
+               ~NamedPipeClientStream () {
+                       Dispose (false);
+               }
+               
                INamedPipeClient impl;
 
                public void Connect ()
@@ -137,6 +143,26 @@ namespace System.IO.Pipes
 #endif
                }
 
+               public Task ConnectAsync ()
+               {
+                       return ConnectAsync (Timeout.Infinite, CancellationToken.None);
+               }
+
+               public Task ConnectAsync (int timeout)
+               {
+                       return ConnectAsync (timeout, CancellationToken.None);
+               }
+
+               public Task ConnectAsync (CancellationToken cancellationToken)
+               {
+                       return ConnectAsync (Timeout.Infinite, cancellationToken);
+               }
+
+               public Task ConnectAsync (int timeout, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public int NumberOfServerInstances {
                        get {
                                CheckPipePropertyOperations ();
index 2723109bd988f7e2ec1a34558cb600b810a77027..3ffe89436727acf71c4a3be5afbd61aed7d9712f 100644 (file)
@@ -32,6 +32,8 @@ using Microsoft.Win32.SafeHandles;
 using System;
 using System.IO;
 using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
 using System.Security.AccessControl;
 using System.Security.Permissions;
 using System.Security.Principal;
@@ -153,6 +155,17 @@ namespace System.IO.Pipes
                        IsConnected = true;
                }
 
+               public Task WaitForConnectionAsync ()
+               {
+                       return WaitForConnectionAsync (CancellationToken.None);
+               }
+
+               [MonoTODO]
+               public Task WaitForConnectionAsync (CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                [MonoTODO]
                [SecurityPermission (SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlPrincipal)]
                public string GetImpersonationUserName ()
index ed030e7608bde8da0cf99b23f88752f042804491..20b7e7ec09cb8fa3a7f17df609d7f240237f2434 100644 (file)
@@ -269,13 +269,13 @@ namespace System.IO.Pipes
                                
                        pipeSecurity.Persist (SafePipeHandle);
                }
+#endif
 
                // pipe I/O
 
                public void WaitForPipeDrain ()
                {
                }
-#endif
 
                [MonoTODO]
                public override int Read ([In] byte [] buffer, int offset, int count)
diff --git a/mcs/class/System.Core/System.Security.Cryptography/ECCurve.cs b/mcs/class/System.Core/System.Security.Cryptography/ECCurve.cs
new file mode 100644 (file)
index 0000000..40374b8
--- /dev/null
@@ -0,0 +1,89 @@
+//
+// ECCurve.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NETSTANDARD
+
+namespace System.Security.Cryptography
+{
+       [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+       public struct ECCurve
+       {
+               public byte[] A;
+               public byte[] B;
+               public byte[] Cofactor;
+               public ECCurveType CurveType;
+               public ECPoint G;
+               public HashAlgorithmName? Hash;
+               public byte[] Order;
+               public byte[] Polynomial;
+               public byte[] Prime;
+               public byte[] Seed;
+               public bool IsCharacteristic2 { get { throw new NotImplementedException (); } }
+               public bool IsExplicit { get { throw new NotImplementedException (); } }
+               public bool IsNamed { get { throw new NotImplementedException (); } }
+               public bool IsPrime { get { throw new NotImplementedException (); } }
+               public Oid Oid { get { throw new NotImplementedException (); } }
+               public static ECCurve CreateFromFriendlyName (string oidFriendlyName) { throw new NotImplementedException (); }
+               public static ECCurve CreateFromOid (Oid curveOid) { throw new NotImplementedException (); }
+               public static ECCurve CreateFromValue (string oidValue) { throw new NotImplementedException (); }
+               public void Validate () { throw new NotImplementedException (); }
+
+               public enum ECCurveType
+               {
+                       Implicit = 0,
+                       PrimeShortWeierstrass = 1,
+                       PrimeTwistedEdwards = 2,
+                       PrimeMontgomery = 3,
+                       Characteristic2 = 4,
+                       Named = 5,
+               }
+               
+               public static class NamedCurves
+               {
+                       public static ECCurve brainpoolP160r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP160t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP192r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP192t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP224r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP224t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP256r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP256t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP320r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP320t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP384r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP384t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP512r1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve brainpoolP512t1 { get { throw new NotImplementedException (); } }
+                       public static ECCurve nistP256 { get { throw new NotImplementedException (); } }
+                       public static ECCurve nistP384 { get { throw new NotImplementedException (); } }
+                       public static ECCurve nistP521 { get { throw new NotImplementedException (); } }
+               }
+       }
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Core/System.Security.Cryptography/ECParameters.cs b/mcs/class/System.Core/System.Security.Cryptography/ECParameters.cs
new file mode 100644 (file)
index 0000000..e715904
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// ECPArameters.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NETSTANDARD
+
+namespace System.Security.Cryptography
+{
+    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+    public partial struct ECParameters
+    {
+        public ECCurve Curve;
+        public byte[] D;
+        public ECPoint Q;
+        public void Validate () { throw new NotImplementedException (); }
+    }
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Core/System.Security.Cryptography/ECPoint.cs b/mcs/class/System.Core/System.Security.Cryptography/ECPoint.cs
new file mode 100644 (file)
index 0000000..88042d1
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// ECPoint.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NETSTANDARD
+
+namespace System.Security.Cryptography
+{
+       [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+       public struct ECPoint
+       {
+               public byte[] X;
+               public byte[] Y;
+       }
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Core/System.Security.Cryptography/IncrementalHash.cs b/mcs/class/System.Core/System.Security.Cryptography/IncrementalHash.cs
new file mode 100644 (file)
index 0000000..14c895e
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// IncrementalHash.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NETSTANDARD
+
+namespace System.Security.Cryptography
+{
+    public sealed class IncrementalHash : IDisposable
+    {
+        private IncrementalHash () { }
+        public HashAlgorithmName AlgorithmName { get { throw new NotImplementedException (); } }
+        public void AppendData (byte[] data) { }
+        public void AppendData (byte[] data, int offset, int count) { }
+        public static IncrementalHash CreateHash (HashAlgorithmName hashAlgorithm) { throw new NotImplementedException (); }
+        public static IncrementalHash CreateHMAC (HashAlgorithmName hashAlgorithm, byte[] key) { throw new NotImplementedException (); }
+        public void Dispose () { }
+        public byte[] GetHashAndReset () { throw new NotImplementedException (); }
+    }
+}
+
+#endif
\ No newline at end of file
index 30969ddee01b4bd65e7f9bf96225cc8369779b8e..f6a3f9b546078bc94ddbe43598ca8cdb33f58b3e 100644 (file)
@@ -223,3 +223,8 @@ ReferenceSources/Strings.cs
 ../referencesource/System.Core/System/threading/ReaderWriterLockSlim/ReaderWriterLockSlim.cs
 
 ../referencesource/System.Core/System/threading/Tasks/TaskExtensions.cs
+
+System.Security.Cryptography/ECCurve.cs
+System.Security.Cryptography/ECPoint.cs
+System.Security.Cryptography/ECParameters.cs
+System.Security.Cryptography/IncrementalHash.cs
index 0362d94774ad4b90d592729c79112b48e5b4b8d3..f1bd8de25c7652b17de85b1032e24d6c9a43f6c7 100644 (file)
@@ -79,6 +79,11 @@ namespace Microsoft.SqlServer.Server
                        throw new NotImplementedException ();
                }
 
+               public virtual DateTimeOffset GetDateTimeOffset (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public virtual decimal GetDecimal (int ordinal)
                {
                        throw new NotImplementedException ();
@@ -89,7 +94,7 @@ namespace Microsoft.SqlServer.Server
                        throw new NotImplementedException ();
                }
 
-               public virtual System.Type GetFieldType (int ordinal)
+               public virtual Type GetFieldType (int ordinal)
                {
                        throw new NotImplementedException ();
                }
@@ -129,11 +134,116 @@ namespace Microsoft.SqlServer.Server
                        throw new NotImplementedException ();
                }
 
+               public virtual SqlBinary GetSqlBinary (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlBoolean GetSqlBoolean (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlByte GetSqlByte (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlBytes GetSqlBytes (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlChars GetSqlChars (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlDateTime GetSqlDateTime (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlDecimal GetSqlDecimal (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlDouble GetSqlDouble (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual Type GetSqlFieldType (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlGuid GetSqlGuid (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlInt16 GetSqlInt16 (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlInt32 GetSqlInt32 (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlInt64 GetSqlInt64 (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlMetaData GetSqlMetaData (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlMoney GetSqlMoney (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlSingle GetSqlSingle (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlString GetSqlString (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual object GetSqlValue (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual int GetSqlValues (object[] values)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual SqlXml GetSqlXml (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public virtual string GetString (int ordinal)
                {
                        throw new NotImplementedException ();
                }
 
+               public virtual TimeSpan GetTimeSpan (int ordinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public virtual object GetValue (int ordinal)
                {
                        throw new NotImplementedException ();
@@ -144,6 +254,181 @@ namespace Microsoft.SqlServer.Server
                        throw new NotImplementedException ();
                }
 
+               public virtual void SetBoolean (int ordinal, bool value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetByte (int ordinal, byte value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetBytes (int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetChar (int ordinal, char value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetChars (int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetDateTime (int ordinal, DateTime value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetDateTimeOffset (int ordinal, DateTimeOffset value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetDBNull (int ordinal)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetDecimal (int ordinal, decimal value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetDouble (int ordinal, double value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetFloat (int ordinal, float value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetGuid (int ordinal, Guid value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetInt16 (int ordinal, short value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetInt32 (int ordinal, int value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetInt64 (int ordinal, long value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlBinary (int ordinal, SqlBinary value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlBoolean (int ordinal, SqlBoolean value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlByte (int ordinal, SqlByte value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlBytes (int ordinal, SqlBytes value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlChars (int ordinal, SqlChars value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlDateTime (int ordinal, SqlDateTime value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlDecimal (int ordinal, SqlDecimal value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlDouble (int ordinal, SqlDouble value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlGuid (int ordinal, SqlGuid value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlInt16 (int ordinal, SqlInt16 value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlInt32 (int ordinal, SqlInt32 value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlInt64 (int ordinal, SqlInt64 value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlMoney (int ordinal, SqlMoney value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlSingle (int ordinal, SqlSingle value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlString (int ordinal, SqlString value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetSqlXml (int ordinal, SqlXml value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetString (int ordinal, string value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetTimeSpan (int ordinal, TimeSpan value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void SetValue (int ordinal, object value)
+               { 
+                       throw new NotImplementedException ();
+               }
+
+               public virtual int SetValues (params object[] values)
+               { 
+                       throw new NotImplementedException ();
+               }
+
                public virtual bool IsDBNull (int ordinal)
                {
                        throw new NotImplementedException ();
index 831266c9a50357b42cbf8c610636e7b8e243eded..b428f22577d2e80b9b6563db2f149ae9c69e8065 100644 (file)
@@ -33,6 +33,7 @@
 
 using System;
 using System.Data;
+using System.Data.SqlClient;
 using System.Threading;
 using System.Data.SqlTypes;
 
@@ -205,6 +206,42 @@ namespace Microsoft.SqlServer.Server {
                        this._sqlDbType = dbType;
                }
 
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, long maxLength, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, byte precision, byte scale, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, long maxLength, long locale, SqlCompareOptions compareOptions, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, string database, string owningSchema, string objectName, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SqlMetaData (string name, SqlDbType dbType, long maxLength, byte precision, byte scale, long localeId, SqlCompareOptions compareOptions, System.Type userDefinedType, bool useServerDefault, bool isUniqueKey, SortOrder columnSortOrder, int sortOrdinal)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public SqlMetaData (string name, SqlDbType dbType, long maxLength)
                {
                        if (name == null)
@@ -659,6 +696,25 @@ namespace Microsoft.SqlServer.Server {
                        get { throw new NotImplementedException (); }
                }
 
+               [MonoTODO]
+               public bool IsUniqueKey {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public SortOrder SortOrder {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public int SortOrdinal {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public bool UseServerDefault {
+                       get { throw new NotImplementedException (); }
+               }
                #endregion // Properties
 
                #region Methods
@@ -705,6 +761,20 @@ namespace Microsoft.SqlServer.Server {
                        return value;
                }
 
+               public DateTimeOffset Adjust (DateTimeOffset value)
+               {
+                       if (type != typeof (DateTimeOffset))
+                               throw new ArgumentException ("Value does not match the SqlMetaData type");
+                       return value;
+               }
+
+               public TimeSpan Adjust (TimeSpan value)
+               {
+                       if (type != typeof (TimeSpan))
+                               throw new ArgumentException ("Value does not match the SqlMetaData type");
+                       return value;
+               }
+
                public decimal Adjust (decimal value)
                {
                        if (type != typeof (decimal))
@@ -866,6 +936,12 @@ namespace Microsoft.SqlServer.Server {
                        return value;
                }
 
+               [MonoTODO]
+               public SqlXml Adjust (SqlXml value)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public string Adjust (string value)
                {
                        if (type != typeof (string))
index 3b915459631c58e2836e480d4892df724e23ba7c..96cf66caba6888d67c967131816667c10b24f34b 100644 (file)
@@ -32,6 +32,8 @@
 using System;
 using System.Data;
 using System.Data.Common;
+using System.Threading;
+using System.Threading.Tasks;
 using Mono.Data.Tds;
 using Mono.Data.Tds.Protocol;
 
@@ -146,6 +148,12 @@ namespace System.Data.SqlClient {
                        set { _destinationTableName = value; }
                }
 
+               [MonoTODO]
+               public bool EnableStreaming {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
                public int NotifyAfter {
                        get { return _notifyAfter; }
                        set {
@@ -598,6 +606,24 @@ namespace System.Data.SqlClient {
                        BulkCopyToServer (table, rowState);
                }
 
+               [MonoTODO]
+               public void WriteToServer (DbDataReader reader)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DbDataReader reader)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DbDataReader reader, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                private void RowsCopied (long rowsCopied)
                {
                        SqlRowsCopiedEventArgs e = new SqlRowsCopiedEventArgs (rowsCopied);
index edd0894e610fee5c2e703e52a872835651bf7f79..c6dc7712baea19fa4846ae2da30eb5529c284944 100644 (file)
@@ -47,6 +47,8 @@ using System.Data.Common;
 using System.Data.Sql;
 using System.Runtime.InteropServices;
 using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
 using System.Xml;
 
 namespace System.Data.SqlClient {
@@ -508,6 +510,42 @@ namespace System.Data.SqlClient {
                        }
                }
 
+               [MonoTODO]
+               public new Task<SqlDataReader> ExecuteReaderAsync ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public new Task<SqlDataReader> ExecuteReaderAsync (CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public new Task<SqlDataReader> ExecuteReaderAsync (CommandBehavior behavior)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public new Task<SqlDataReader> ExecuteReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task<XmlReader> ExecuteXmlReaderAsync ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public Task<XmlReader> ExecuteXmlReaderAsync (CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public
                override
                object ExecuteScalar ()
index 194aef4668076d23e69f244c31588d2d58dcc49d..9af24e650543168cb7543aee345b08dafcf815a9 100644 (file)
@@ -163,6 +163,13 @@ namespace System.Data.SqlClient
                        }
                }
        
+               [MonoTODO]
+               public Guid ClientConnectionId {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public
                override
@@ -1663,6 +1670,17 @@ namespace System.Data.SqlClient
                        }
                }
 
+               [MonoTODO]
+               public void ResetStatistics ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public IDictionary RetrieveStatistics ()
+               {
+                       throw new NotImplementedException ();
+               }
 
                #endregion // Methods
 
index 2b0e1a88629b23ff280c94f481b8980fcaa5fb9d..99cfb66fb73aafeec5b22c261c4ccca3fcb4a815 100644 (file)
@@ -162,6 +162,11 @@ namespace System.Data.SqlClient
                        get { return Errors [0].Class; }
                }
 
+               [MonoTODO]
+               public Guid ClientConnectionId {
+                       get { throw new NotImplementedException (); }
+               }
+
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
                public SqlErrorCollection Errors {
                        get { return errors; }
index f011f7cb3b9d4feb9c015c1131ef9e6cb9a20e62..f6153fb60b55074b71511c3baae109d00f466b7f 100644 (file)
@@ -473,6 +473,9 @@ namespace System.Data.SqlClient {
                [BrowsableAttribute(false)]
                public string UdtTypeName { get; set; }
 
+               [BrowsableAttribute(false)]
+               public string TypeName { get; set; }
+
                #endregion // Properties
 
                #region Methods
index dd2571f2b1976c2bf09efe77f6e1d51a32c071f0..05426acf59fa26a02389725838c1db7926f7c226 100644 (file)
@@ -61,4 +61,6 @@ using System.Runtime.InteropServices;
 [assembly: ComCompatibleVersion (1, 0, 3300, 0)]
 [assembly: AllowPartiallyTrustedCallers]
 
+#if !NET_2_1
 [assembly: SecurityCritical (SecurityCriticalScope.Explicit)]
+#endif
\ No newline at end of file
index 5a8a72c4c50e416866c1a7670beb50a626555741..7eea754cfa905116418953dd58a636f7fbea109f 100644 (file)
@@ -3,15 +3,20 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.IdentityModel.dll
-LIB_REFS = System System.Xml System.Security System.Configuration Mono.Security System.Runtime.Serialization
+LIB_REFS = System System.Xml System.Security Mono.Security System.Runtime.Serialization
 LIB_MCS_FLAGS = \
                /d:NET_3_0      \
                $(OTHER_LIB_MCS_FLAGS)
 
+ifneq (2.1, $(FRAMEWORK_VERSION))
+LIB_REFS += System.Configuration
+endif
+
 ifndef NO_SYSTEM_WEB_DEPENDENCY
+ifneq (2.1, $(FRAMEWORK_VERSION))
 LIB_REFS += System.Web
 endif
-
+endif
 
 ifndef NO_SYSTEM_WEB_APPSERVICES_DEPENDENCY
 ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
index 721cda7426642a446af9ae1528b73dac3f112be4..180e75c6fa0eea6a84b3afbf98352238a3587393 100644 (file)
@@ -27,8 +27,6 @@
 //
 using System;
 using System.Collections.ObjectModel;
-using System.IdentityModel.Policy;
-using System.IdentityModel.Tokens;
 using System.Security.Cryptography.X509Certificates;
 
 namespace System.IdentityModel.Selectors
diff --git a/mcs/class/System.IdentityModel/System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/System.IdentityModel.dll.sources
deleted file mode 100755 (executable)
index 4d705d2..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-Assembly/AssemblyInfo.cs
-System.IdentityModel/CookieTransform.cs
-System.IdentityModel/OpenObject.cs
-System.IdentityModel/SignatureVerificationFailedException.cs
-System.IdentityModel.Claims/Claim.cs
-System.IdentityModel.Claims/ClaimSet.cs
-System.IdentityModel.Claims/ClaimTypes.cs
-System.IdentityModel.Claims/DefaultClaimSet.cs
-System.IdentityModel.Claims/Rights.cs
-System.IdentityModel.Claims/WindowsClaimSet.cs
-System.IdentityModel.Claims/X509CertificateClaimSet.cs
-System.IdentityModel.Configuration/ICustomIdentityConfiguration.cs
-System.IdentityModel.Configuration/IdentityModelCaches.cs
-System.IdentityModel.Policy/AuthorizationContext.cs
-System.IdentityModel.Policy/EvaluationContext.cs
-System.IdentityModel.Policy/IAuthorizationComponent.cs
-System.IdentityModel.Policy/IAuthorizationPolicy.cs
-System.IdentityModel.Protocols/WSTrust/BinaryExchange.cs
-System.IdentityModel.Protocols/WSTrust/EndpointReference.cs
-System.IdentityModel.Protocols/WSTrust/Entropy.cs
-System.IdentityModel.Protocols/WSTrust/Lifetime.cs
-System.IdentityModel.Protocols/WSTrust/ProtectedKey.cs
-System.IdentityModel.Protocols/WSTrust/RequestSecurityTokenResponse.cs
-System.IdentityModel.Protocols/WSTrust/RequestedProofToken.cs
-System.IdentityModel.Protocols/WSTrust/RequestedSecurityToken.cs
-System.IdentityModel.Protocols/WSTrust/Status.cs
-System.IdentityModel.Protocols/WSTrust/UseKey.cs
-System.IdentityModel.Protocols/WSTrust/WSTrustMessage.cs
-System.IdentityModel.Selectors/AudienceUriMode.cs
-System.IdentityModel.Selectors/CustomUserNameSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/KerberosSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/KerberosSecurityTokenProvider.cs
-System.IdentityModel.Selectors/RsaSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/SamlSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/SecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/SecurityTokenManager.cs
-System.IdentityModel.Selectors/SecurityTokenProvider.cs
-System.IdentityModel.Selectors/SecurityTokenRequirement.cs
-System.IdentityModel.Selectors/SecurityTokenResolver.cs
-System.IdentityModel.Selectors/SecurityTokenSerializer.cs
-System.IdentityModel.Selectors/SecurityTokenVersion.cs
-System.IdentityModel.Selectors/SystemIdentityAuthorizationPolicy.cs
-System.IdentityModel.Selectors/UserNamePasswordValidator.cs
-System.IdentityModel.Selectors/UserNameSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/UserNameSecurityTokenProvider.cs
-System.IdentityModel.Selectors/WindowsSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/WindowsUserNameSecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/X509CertificateValidator.cs
-System.IdentityModel.Selectors/X509SecurityTokenAuthenticator.cs
-System.IdentityModel.Selectors/X509SecurityTokenProvider.cs
-System.IdentityModel.Tokens/AsymmetricSecurityKey.cs
-System.IdentityModel.Tokens/AudienceRestriction.cs
-System.IdentityModel.Tokens/AuthenticationContext.cs
-System.IdentityModel.Tokens/AuthenticationInformation.cs
-System.IdentityModel.Tokens/BinaryKeyIdentifierClause.cs
-System.IdentityModel.Tokens/BootstrapContext.cs
-System.IdentityModel.Tokens/EncryptedKeyIdentifierClause.cs
-System.IdentityModel.Tokens/EncryptingCredentials.cs
-System.IdentityModel.Tokens/GenericXmlSecurityToken.cs
-System.IdentityModel.Tokens/InMemorySymmetricSecurityKey.cs
-System.IdentityModel.Tokens/IssuerNameRegistry.cs
-System.IdentityModel.Tokens/KerberosReceiverSecurityToken.cs
-System.IdentityModel.Tokens/KerberosRequestorSecurityToken.cs
-System.IdentityModel.Tokens/LocalIdKeyIdentifierClause.cs
-System.IdentityModel.Tokens/ProofDescriptor.cs
-System.IdentityModel.Tokens/RsaKeyIdentifierClause.cs
-System.IdentityModel.Tokens/RsaSecurityKey.cs
-System.IdentityModel.Tokens/RsaSecurityToken.cs
-System.IdentityModel.Tokens/SamlAccessDecision.cs
-System.IdentityModel.Tokens/SamlAction.cs
-System.IdentityModel.Tokens/SamlAdvice.cs
-System.IdentityModel.Tokens/SamlAssertion.cs
-System.IdentityModel.Tokens/SamlAssertionKeyIdentifierClause.cs
-System.IdentityModel.Tokens/SamlAttribute.cs
-System.IdentityModel.Tokens/SamlAttributeStatement.cs
-System.IdentityModel.Tokens/SamlAudienceRestrictionCondition.cs
-System.IdentityModel.Tokens/SamlAuthenticationClaimResource.cs
-System.IdentityModel.Tokens/SamlAuthenticationStatement.cs
-System.IdentityModel.Tokens/SamlAuthorityBinding.cs
-System.IdentityModel.Tokens/SamlAuthorizationDecisionClaimResource.cs
-System.IdentityModel.Tokens/SamlAuthorizationDecisionStatement.cs
-System.IdentityModel.Tokens/SamlCondition.cs
-System.IdentityModel.Tokens/SamlConditions.cs
-System.IdentityModel.Tokens/SamlConstants.cs
-System.IdentityModel.Tokens/SamlDoNotCacheCondition.cs
-System.IdentityModel.Tokens/SamlEvidence.cs
-System.IdentityModel.Tokens/SamlNameIdentifierClaimResource.cs
-System.IdentityModel.Tokens/SamlSecurityToken.cs
-System.IdentityModel.Tokens/SamlSerializer.cs
-System.IdentityModel.Tokens/SamlStatement.cs
-System.IdentityModel.Tokens/SamlSubject.cs
-System.IdentityModel.Tokens/SamlSubjectStatement.cs
-System.IdentityModel.Tokens/SecurityAlgorithms.cs
-System.IdentityModel.Tokens/SecurityKey.cs
-System.IdentityModel.Tokens/SecurityKeyIdentifier.cs
-System.IdentityModel.Tokens/SecurityKeyIdentifierClause.cs
-System.IdentityModel.Tokens/SecurityKeyType.cs
-System.IdentityModel.Tokens/SecurityKeyUsage.cs
-System.IdentityModel.Tokens/SecurityToken.cs
-System.IdentityModel.Tokens/SecurityTokenDescriptor.cs
-System.IdentityModel.Tokens/SecurityTokenException.cs
-System.IdentityModel.Tokens/SecurityTokenExpiredException.cs
-System.IdentityModel.Tokens/SecurityTokenHandler.cs
-System.IdentityModel.Tokens/SecurityTokenHandlerCollection.cs
-System.IdentityModel.Tokens/SecurityTokenHandlerConfiguration.cs
-System.IdentityModel.Tokens/SecurityTokenNotYetValidException.cs
-System.IdentityModel.Tokens/SecurityTokenReplayDetectedException.cs
-System.IdentityModel.Tokens/SecurityTokenTypes.cs
-System.IdentityModel.Tokens/SecurityTokenValidationException.cs
-System.IdentityModel.Tokens/SessionSecurityToken.cs
-System.IdentityModel.Tokens/SessionSecurityTokenCache.cs
-System.IdentityModel.Tokens/SessionSecurityTokenCacheKey.cs
-System.IdentityModel.Tokens/SessionSecurityTokenHandler.cs
-System.IdentityModel.Tokens/SigningCredentials.cs
-System.IdentityModel.Tokens/SymmetricSecurityKey.cs
-System.IdentityModel.Tokens/TlsHMAC.cs
-System.IdentityModel.Tokens/TokenReplayCache.cs
-System.IdentityModel.Tokens/UserNameSecurityToken.cs
-System.IdentityModel.Tokens/WindowsSecurityToken.cs
-System.IdentityModel.Tokens/X509AsymmetricSecurityKey.cs
-System.IdentityModel.Tokens/X509IssuerSerialKeyIdentifierClause.cs
-System.IdentityModel.Tokens/X509RawDataKeyIdentifierClause.cs
-System.IdentityModel.Tokens/X509SecurityToken.cs
-System.IdentityModel.Tokens/X509SigningCredentials.cs
-System.IdentityModel.Tokens/X509SubjectKeyIdentifierClause.cs
-System.IdentityModel.Tokens/X509ThumbprintKeyIdentifierClause.cs
-System.IdentityModel.Tokens/X509WindowsSecurityToken.cs
-System.Security.Claims/AuthenticationTypes.cs
-System.ServiceModel.Security/X509CertificateValidationMode.cs
diff --git a/mcs/class/System.IdentityModel/mobile_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/mobile_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..f67d88c
--- /dev/null
@@ -0,0 +1,6 @@
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+
+System.IdentityModel.Selectors/X509CertificateValidator.cs
+System.ServiceModel.Security/X509CertificateValidationMode.cs
diff --git a/mcs/class/System.IdentityModel/mobile_static_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/mobile_static_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/monodroid_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/monodroid_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/monotouch_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/monotouch_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/monotouch_tv_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/monotouch_tv_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/monotouch_watch_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/monotouch_watch_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources
new file mode 100755 (executable)
index 0000000..4d705d2
--- /dev/null
@@ -0,0 +1,131 @@
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+System.IdentityModel/CookieTransform.cs
+System.IdentityModel/OpenObject.cs
+System.IdentityModel/SignatureVerificationFailedException.cs
+System.IdentityModel.Claims/Claim.cs
+System.IdentityModel.Claims/ClaimSet.cs
+System.IdentityModel.Claims/ClaimTypes.cs
+System.IdentityModel.Claims/DefaultClaimSet.cs
+System.IdentityModel.Claims/Rights.cs
+System.IdentityModel.Claims/WindowsClaimSet.cs
+System.IdentityModel.Claims/X509CertificateClaimSet.cs
+System.IdentityModel.Configuration/ICustomIdentityConfiguration.cs
+System.IdentityModel.Configuration/IdentityModelCaches.cs
+System.IdentityModel.Policy/AuthorizationContext.cs
+System.IdentityModel.Policy/EvaluationContext.cs
+System.IdentityModel.Policy/IAuthorizationComponent.cs
+System.IdentityModel.Policy/IAuthorizationPolicy.cs
+System.IdentityModel.Protocols/WSTrust/BinaryExchange.cs
+System.IdentityModel.Protocols/WSTrust/EndpointReference.cs
+System.IdentityModel.Protocols/WSTrust/Entropy.cs
+System.IdentityModel.Protocols/WSTrust/Lifetime.cs
+System.IdentityModel.Protocols/WSTrust/ProtectedKey.cs
+System.IdentityModel.Protocols/WSTrust/RequestSecurityTokenResponse.cs
+System.IdentityModel.Protocols/WSTrust/RequestedProofToken.cs
+System.IdentityModel.Protocols/WSTrust/RequestedSecurityToken.cs
+System.IdentityModel.Protocols/WSTrust/Status.cs
+System.IdentityModel.Protocols/WSTrust/UseKey.cs
+System.IdentityModel.Protocols/WSTrust/WSTrustMessage.cs
+System.IdentityModel.Selectors/AudienceUriMode.cs
+System.IdentityModel.Selectors/CustomUserNameSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/KerberosSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/KerberosSecurityTokenProvider.cs
+System.IdentityModel.Selectors/RsaSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/SamlSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/SecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/SecurityTokenManager.cs
+System.IdentityModel.Selectors/SecurityTokenProvider.cs
+System.IdentityModel.Selectors/SecurityTokenRequirement.cs
+System.IdentityModel.Selectors/SecurityTokenResolver.cs
+System.IdentityModel.Selectors/SecurityTokenSerializer.cs
+System.IdentityModel.Selectors/SecurityTokenVersion.cs
+System.IdentityModel.Selectors/SystemIdentityAuthorizationPolicy.cs
+System.IdentityModel.Selectors/UserNamePasswordValidator.cs
+System.IdentityModel.Selectors/UserNameSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/UserNameSecurityTokenProvider.cs
+System.IdentityModel.Selectors/WindowsSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/WindowsUserNameSecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/X509CertificateValidator.cs
+System.IdentityModel.Selectors/X509SecurityTokenAuthenticator.cs
+System.IdentityModel.Selectors/X509SecurityTokenProvider.cs
+System.IdentityModel.Tokens/AsymmetricSecurityKey.cs
+System.IdentityModel.Tokens/AudienceRestriction.cs
+System.IdentityModel.Tokens/AuthenticationContext.cs
+System.IdentityModel.Tokens/AuthenticationInformation.cs
+System.IdentityModel.Tokens/BinaryKeyIdentifierClause.cs
+System.IdentityModel.Tokens/BootstrapContext.cs
+System.IdentityModel.Tokens/EncryptedKeyIdentifierClause.cs
+System.IdentityModel.Tokens/EncryptingCredentials.cs
+System.IdentityModel.Tokens/GenericXmlSecurityToken.cs
+System.IdentityModel.Tokens/InMemorySymmetricSecurityKey.cs
+System.IdentityModel.Tokens/IssuerNameRegistry.cs
+System.IdentityModel.Tokens/KerberosReceiverSecurityToken.cs
+System.IdentityModel.Tokens/KerberosRequestorSecurityToken.cs
+System.IdentityModel.Tokens/LocalIdKeyIdentifierClause.cs
+System.IdentityModel.Tokens/ProofDescriptor.cs
+System.IdentityModel.Tokens/RsaKeyIdentifierClause.cs
+System.IdentityModel.Tokens/RsaSecurityKey.cs
+System.IdentityModel.Tokens/RsaSecurityToken.cs
+System.IdentityModel.Tokens/SamlAccessDecision.cs
+System.IdentityModel.Tokens/SamlAction.cs
+System.IdentityModel.Tokens/SamlAdvice.cs
+System.IdentityModel.Tokens/SamlAssertion.cs
+System.IdentityModel.Tokens/SamlAssertionKeyIdentifierClause.cs
+System.IdentityModel.Tokens/SamlAttribute.cs
+System.IdentityModel.Tokens/SamlAttributeStatement.cs
+System.IdentityModel.Tokens/SamlAudienceRestrictionCondition.cs
+System.IdentityModel.Tokens/SamlAuthenticationClaimResource.cs
+System.IdentityModel.Tokens/SamlAuthenticationStatement.cs
+System.IdentityModel.Tokens/SamlAuthorityBinding.cs
+System.IdentityModel.Tokens/SamlAuthorizationDecisionClaimResource.cs
+System.IdentityModel.Tokens/SamlAuthorizationDecisionStatement.cs
+System.IdentityModel.Tokens/SamlCondition.cs
+System.IdentityModel.Tokens/SamlConditions.cs
+System.IdentityModel.Tokens/SamlConstants.cs
+System.IdentityModel.Tokens/SamlDoNotCacheCondition.cs
+System.IdentityModel.Tokens/SamlEvidence.cs
+System.IdentityModel.Tokens/SamlNameIdentifierClaimResource.cs
+System.IdentityModel.Tokens/SamlSecurityToken.cs
+System.IdentityModel.Tokens/SamlSerializer.cs
+System.IdentityModel.Tokens/SamlStatement.cs
+System.IdentityModel.Tokens/SamlSubject.cs
+System.IdentityModel.Tokens/SamlSubjectStatement.cs
+System.IdentityModel.Tokens/SecurityAlgorithms.cs
+System.IdentityModel.Tokens/SecurityKey.cs
+System.IdentityModel.Tokens/SecurityKeyIdentifier.cs
+System.IdentityModel.Tokens/SecurityKeyIdentifierClause.cs
+System.IdentityModel.Tokens/SecurityKeyType.cs
+System.IdentityModel.Tokens/SecurityKeyUsage.cs
+System.IdentityModel.Tokens/SecurityToken.cs
+System.IdentityModel.Tokens/SecurityTokenDescriptor.cs
+System.IdentityModel.Tokens/SecurityTokenException.cs
+System.IdentityModel.Tokens/SecurityTokenExpiredException.cs
+System.IdentityModel.Tokens/SecurityTokenHandler.cs
+System.IdentityModel.Tokens/SecurityTokenHandlerCollection.cs
+System.IdentityModel.Tokens/SecurityTokenHandlerConfiguration.cs
+System.IdentityModel.Tokens/SecurityTokenNotYetValidException.cs
+System.IdentityModel.Tokens/SecurityTokenReplayDetectedException.cs
+System.IdentityModel.Tokens/SecurityTokenTypes.cs
+System.IdentityModel.Tokens/SecurityTokenValidationException.cs
+System.IdentityModel.Tokens/SessionSecurityToken.cs
+System.IdentityModel.Tokens/SessionSecurityTokenCache.cs
+System.IdentityModel.Tokens/SessionSecurityTokenCacheKey.cs
+System.IdentityModel.Tokens/SessionSecurityTokenHandler.cs
+System.IdentityModel.Tokens/SigningCredentials.cs
+System.IdentityModel.Tokens/SymmetricSecurityKey.cs
+System.IdentityModel.Tokens/TlsHMAC.cs
+System.IdentityModel.Tokens/TokenReplayCache.cs
+System.IdentityModel.Tokens/UserNameSecurityToken.cs
+System.IdentityModel.Tokens/WindowsSecurityToken.cs
+System.IdentityModel.Tokens/X509AsymmetricSecurityKey.cs
+System.IdentityModel.Tokens/X509IssuerSerialKeyIdentifierClause.cs
+System.IdentityModel.Tokens/X509RawDataKeyIdentifierClause.cs
+System.IdentityModel.Tokens/X509SecurityToken.cs
+System.IdentityModel.Tokens/X509SigningCredentials.cs
+System.IdentityModel.Tokens/X509SubjectKeyIdentifierClause.cs
+System.IdentityModel.Tokens/X509ThumbprintKeyIdentifierClause.cs
+System.IdentityModel.Tokens/X509WindowsSecurityToken.cs
+System.Security.Claims/AuthenticationTypes.cs
+System.ServiceModel.Security/X509CertificateValidationMode.cs
diff --git a/mcs/class/System.IdentityModel/xammac_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/xammac_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..4296367
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.IdentityModel.dll.sources
diff --git a/mcs/class/System.IdentityModel/xammac_net_4_5_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/xammac_net_4_5_System.IdentityModel.dll.sources
new file mode 100644 (file)
index 0000000..7d31267
--- /dev/null
@@ -0,0 +1 @@
+#include net_4_x_System.IdentityModel.dll.sources
index 94ad2ffb2742945f1914a1a127bd8542367a395e..78f2fafcc83284e5e87abfbcbfb13e4935abbd1a 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Collections.Generic;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Collections.Specialized;
 using System.Net.Http.Headers;
+using System.Net.Security;
 using System.Linq;
 
 namespace System.Net.Http
@@ -387,5 +391,74 @@ namespace System.Net.Http
                        
                        return CreateResponseMessage (wresponse, request, cancellationToken);
                }
+
+#if NETSTANDARD
+               public bool CheckCertificateRevocationList {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public X509CertificateCollection ClientCertificates {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ICredentials DefaultProxyCredentials {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int MaxConnectionsPerServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int MaxResponseHeadersLength {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public IDictionary<string,object> Properties {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Func<HttpRequestMessage,X509Certificate2,X509Chain,SslPolicyErrors,bool> ServerCertificateCustomValidationCallback {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public SslProtocols SslProtocols {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+#endif
        }
 }
index dc094beb4501f1571d2d86b19f543579cc67fd44..526b5f1f4b813e14f91a6c53c844adc3d954f62c 100644 (file)
@@ -7,6 +7,7 @@ using System.ServiceModel.Channels;
 using System.ServiceModel.Dispatcher;
 using System.Text;
 using System.Xml;
+using System.Threading;
 
 namespace System.Runtime.CompilerServices
 {
@@ -22,9 +23,92 @@ namespace System.Runtime.CompilerServices
 namespace System.ServiceModel
 {
        public class EndpointIdentity {}
-       public class InstanceContext
+       public class InstanceContext : CommunicationObject, IExtensibleObject<InstanceContext>
        {
-               public InstanceContext (object dummy) {}
+               protected internal override TimeSpan DefaultCloseTimeout
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               protected internal override TimeSpan DefaultOpenTimeout
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               IExtensionCollection<InstanceContext> IExtensibleObject<InstanceContext>.Extensions
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public SynchronizationContext SynchronizationContext {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
+               public InstanceContext (object implementation)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public object GetServiceInstance (Message message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnAbort ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override IAsyncResult OnBeginOpen (TimeSpan timeout, AsyncCallback callback, object state)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClose (TimeSpan timeout)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClosed ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnEndClose (IAsyncResult result)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnEndOpen (IAsyncResult result)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnFaulted ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpen (TimeSpan timeout)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpened ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpening ()
+               {
+                       throw new NotImplementedException ();
+               }
        }
        // introduced for silverlight sdk compatibility
        internal class OperationFormatStyleHelper
index eaaad975e94ff2c0dc2659b61978522ac89642ac..0106b2237d588cce2a1e90f9d21db7ac3de49e0a 100644 (file)
@@ -6,12 +6,96 @@ using System.ServiceModel.Channels;
 using System.ServiceModel.Dispatcher;
 using System.Text;
 using System.Xml;
+using System.Threading;
 
 namespace System.ServiceModel
 {
-       public class InstanceContext
+       public class InstanceContext : CommunicationObject, IExtensibleObject<InstanceContext>
        {
-               public InstanceContext (object dummy) {}
+               protected internal override TimeSpan DefaultCloseTimeout
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               protected internal override TimeSpan DefaultOpenTimeout
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               IExtensionCollection<InstanceContext> IExtensibleObject<InstanceContext>.Extensions
+               {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public SynchronizationContext SynchronizationContext {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
+               public InstanceContext (object implementation)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public object GetServiceInstance (Message message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnAbort ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override IAsyncResult OnBeginOpen (TimeSpan timeout, AsyncCallback callback, object state)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClose (TimeSpan timeout)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClosed ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnEndClose (IAsyncResult result)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnEndOpen (IAsyncResult result)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnFaulted ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpen (TimeSpan timeout)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpened ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnOpening ()
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
 
index 5f09e6a23292aadd8f61059dbe303d53c118bc57..683b096376f1e86e220a234101c1d60536a05512 100644 (file)
@@ -8,7 +8,7 @@ RESOURCE_FILES = \
 
 LIBRARY = System.ServiceModel.dll
 
-LIB_REFS = System System.Xml System.Core System.Runtime.Serialization
+LIB_REFS = System System.Xml System.Core System.Runtime.Serialization System.IdentityModel
 LIB_MCS_FLAGS = \
                /nowarn:414,169,67,3005,436,219,618 \
                /unsafe \
@@ -20,7 +20,7 @@ LIB_REFS += System.ServiceModel.Internals
 endif
 
 ifneq (2.1, $(FRAMEWORK_VERSION))
-LIB_REFS += System.Configuration System.Data System.Security System.IdentityModel System.IdentityModel.Selectors System.Transactions System.Messaging System.Web.Services Mono.Security
+LIB_REFS += System.Configuration System.Data System.Security System.IdentityModel.Selectors System.Transactions System.Messaging System.Web.Services Mono.Security
 LIB_MCS_FLAGS += /d:NET_3_0
 
 ifndef NO_SYSTEM_WEB_DEPENDENCY
index 45aee53ccec76f0df00f47a05e9b9d1e2de306c5..1f47b906c0367a0d89384401d31f0723fa51deb7 100644 (file)
@@ -34,8 +34,8 @@ using System.ServiceModel.Security;
 using System.ServiceModel.Channels.Security;
 using System.IdentityModel.Selectors;
 using System.IdentityModel.Tokens;
-using System.ServiceModel.Security.Tokens;
 #endif
+using System.ServiceModel.Security.Tokens;
 using System.Text;
 
 namespace System.ServiceModel.Channels
@@ -44,11 +44,11 @@ namespace System.ServiceModel.Channels
        {
                internal SecurityBindingElement ()
                {
+                       MessageSecurityVersion = MessageSecurityVersion.Default;
+                       endpoint = new SupportingTokenParameters ();
 #if !NET_2_1 && !XAMMAC_4_5
                        DefaultAlgorithmSuite = SecurityAlgorithmSuite.Default;
-                       MessageSecurityVersion = MessageSecurityVersion.Default;
                        KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
-                       endpoint = new SupportingTokenParameters ();
                        operation = new Dictionary<string,SupportingTokenParameters> ();
                        opt_endpoint = new SupportingTokenParameters ();
                        opt_operation = new Dictionary<string,SupportingTokenParameters> ();
@@ -60,12 +60,12 @@ namespace System.ServiceModel.Channels
 
                internal SecurityBindingElement (SecurityBindingElement other)
                {
-#if !NET_2_1 && !XAMMAC_4_5
-                       alg_suite = other.alg_suite;
-                       key_entropy_mode = other.key_entropy_mode;
                        security_header_layout = other.security_header_layout;
                        msg_security_version = other.msg_security_version;
                        endpoint = other.endpoint.Clone ();
+#if !NET_2_1 && !XAMMAC_4_5
+                       alg_suite = other.alg_suite;
+                       key_entropy_mode = other.key_entropy_mode;
                        opt_endpoint = other.opt_endpoint.Clone ();
                        operation = new Dictionary<string,SupportingTokenParameters> ();
                        foreach (KeyValuePair<string,SupportingTokenParameters> p in other.operation)
@@ -79,12 +79,14 @@ namespace System.ServiceModel.Channels
                        LocalClientSettings = other.LocalClientSettings.Clone ();
                }
 
+               SecurityHeaderLayout security_header_layout;
+               MessageSecurityVersion msg_security_version;
+               SupportingTokenParameters endpoint;
+
 #if !NET_2_1 && !XAMMAC_4_5
                SecurityAlgorithmSuite alg_suite;
                SecurityKeyEntropyMode key_entropy_mode;
-               SecurityHeaderLayout security_header_layout;
-               MessageSecurityVersion msg_security_version;
-               SupportingTokenParameters endpoint, opt_endpoint;
+               SupportingTokenParameters opt_endpoint;
                IDictionary<string,SupportingTokenParameters> operation, opt_operation;
                LocalServiceSecuritySettings service_settings;
 #endif
@@ -93,6 +95,20 @@ namespace System.ServiceModel.Channels
 
                public LocalClientSecuritySettings LocalClientSettings { get; private set; }
 
+               public SecurityHeaderLayout SecurityHeaderLayout {
+                       get { return security_header_layout; }
+                       set { security_header_layout = value; }
+               }
+
+               public MessageSecurityVersion MessageSecurityVersion {
+                       get { return msg_security_version; }
+                       set { msg_security_version = value; }
+               }
+
+               public SupportingTokenParameters EndpointSupportingTokenParameters {
+                       get { return endpoint; }
+               }
+
 #if !NET_2_1 && !XAMMAC_4_5
                public SecurityAlgorithmSuite DefaultAlgorithmSuite {
                        get { return alg_suite; }
@@ -108,20 +124,6 @@ namespace System.ServiceModel.Channels
                        get { return service_settings; }
                }
 
-               public SecurityHeaderLayout SecurityHeaderLayout {
-                       get { return security_header_layout; }
-                       set { security_header_layout = value; }
-               }
-
-               public MessageSecurityVersion MessageSecurityVersion {
-                       get { return msg_security_version; }
-                       set { msg_security_version = value; }
-               }
-
-               public SupportingTokenParameters EndpointSupportingTokenParameters {
-                       get { return endpoint; }
-               }
-
                public IDictionary<string,SupportingTokenParameters> OperationSupportingTokenParameters {
                        get { return operation; }
                }
@@ -445,32 +447,6 @@ namespace System.ServiceModel.Channels
                        throw new NotImplementedException ();
                }
 
-               public static SecurityBindingElement 
-                       CreateSecureConversationBindingElement (SecurityBindingElement binding)
-               {
-                       return CreateSecureConversationBindingElement (binding, false);
-               }
-
-               public static SecurityBindingElement 
-                       CreateSecureConversationBindingElement (
-                       SecurityBindingElement binding, bool requireCancellation)
-               {
-                       return CreateSecureConversationBindingElement (binding, requireCancellation, null);
-               }
-
-               public static SecurityBindingElement 
-                       CreateSecureConversationBindingElement (
-                       SecurityBindingElement binding, bool requireCancellation,
-                       ChannelProtectionRequirements protectionRequirements)
-               {
-                       SymmetricSecurityBindingElement be =
-                               new SymmetricSecurityBindingElement ();
-                       be.ProtectionTokenParameters =
-                               new SecureConversationSecurityTokenParameters (
-                                       binding, requireCancellation, protectionRequirements);
-                       return be;
-               }
-
                public static SymmetricSecurityBindingElement 
                        CreateSslNegotiationBindingElement (bool requireClientCertificate)
                {
@@ -554,6 +530,36 @@ namespace System.ServiceModel.Channels
                }
 #endif
 
+               public static SecurityBindingElement 
+                       CreateSecureConversationBindingElement (SecurityBindingElement binding)
+               {
+                       return CreateSecureConversationBindingElement (binding, false);
+               }
+
+               public static SecurityBindingElement 
+                       CreateSecureConversationBindingElement (
+                       SecurityBindingElement binding, bool requireCancellation)
+               {
+                       return CreateSecureConversationBindingElement (binding, requireCancellation, null);
+               }
+
+               public static SecurityBindingElement 
+                       CreateSecureConversationBindingElement (
+                       SecurityBindingElement binding, bool requireCancellation,
+                       ChannelProtectionRequirements protectionRequirements)
+               {
+#if !NET_2_1 && !XAMMAC_4_5
+                       SymmetricSecurityBindingElement be =
+                               new SymmetricSecurityBindingElement ();
+                       be.ProtectionTokenParameters =
+                               new SecureConversationSecurityTokenParameters (
+                                       binding, requireCancellation, protectionRequirements);
+                       return be;
+#else
+                       throw new NotImplementedException ();
+#endif
+               }
+
                [MonoTODO]
                public static TransportSecurityBindingElement 
                        CreateUserNameOverTransportBindingElement ()
index 12be181d6d7d1a2a264a7bdbaa1d8c22414da6f5..b8e58b4bc059d24cb86088a15c7e27bddca8a43c 100644 (file)
@@ -29,6 +29,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.IO;
 using System.Net.Security;
+using System.Security.Authentication;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Security;
@@ -64,6 +65,12 @@ namespace System.ServiceModel.Channels
                        set { require_client_certificate = value; }
                }
 
+               [MonoTODO]
+               public SslProtocols SslProtocols {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
                private SslStreamSecurityBindingElement (
                        SslStreamSecurityBindingElement other)
                        : base (other)
index 951adecf874c7587c6d708d87230de898df4361c..c50146bfb3cbdd1dd7d54056172046b2756b30f9 100644 (file)
@@ -54,12 +54,12 @@ namespace System.ServiceModel.Description
                protected ClientCredentials (ClientCredentials source)
                {
                        userpass = source.userpass.Clone ();
-#if !NET_2_1
-                       issued_token = source.issued_token.Clone ();
                        digest = source.digest.Clone ();
                        initiator = source.initiator.Clone ();
                        recipient = source.recipient.Clone ();
                        windows = source.windows.Clone ();
+#if !NET_2_1
+                       issued_token = source.issued_token.Clone ();
                        peer = source.peer.Clone ();
                        support_interactive = source.support_interactive;
 #endif
@@ -67,9 +67,7 @@ namespace System.ServiceModel.Description
 
                UserNamePasswordClientCredential userpass =
                        new UserNamePasswordClientCredential ();
-#if !NET_2_1
-               IssuedTokenClientCredential issued_token =
-                       new IssuedTokenClientCredential ();
+
                HttpDigestClientCredential digest =
                        new HttpDigestClientCredential ();
                X509CertificateInitiatorClientCredential initiator =
@@ -78,8 +76,6 @@ namespace System.ServiceModel.Description
                        new X509CertificateRecipientClientCredential ();
                WindowsClientCredential windows =
                        new WindowsClientCredential ();
-               PeerCredential peer = new PeerCredential ();
-               bool support_interactive = true;
 
                public X509CertificateInitiatorClientCredential ClientCertificate {
                        get { return initiator; }
@@ -89,6 +85,20 @@ namespace System.ServiceModel.Description
                        get { return digest; }
                }
 
+               public X509CertificateRecipientClientCredential ServiceCertificate {
+                       get { return recipient; }
+               }
+
+               public WindowsClientCredential Windows {
+                       get { return windows; }
+               }
+
+#if !NET_2_1
+               IssuedTokenClientCredential issued_token =
+                       new IssuedTokenClientCredential ();
+               PeerCredential peer = new PeerCredential ();
+               bool support_interactive = true;
+
                public IssuedTokenClientCredential IssuedToken {
                        get { return issued_token; }
                }
@@ -97,18 +107,10 @@ namespace System.ServiceModel.Description
                        get { return peer; }
                }
 
-               public X509CertificateRecipientClientCredential ServiceCertificate {
-                       get { return recipient; }
-               }
-
                public bool SupportInteractive {
                        get { return support_interactive; }
                        set { support_interactive = value; }
                }
-
-               public WindowsClientCredential Windows {
-                       get { return windows; }
-               }
 #endif
 
                public UserNamePasswordClientCredential UserName {
index 3037251ab5dcd4a9e73f7ee5b40f85902a82a820..3a1da201c8ca41db568c1c0d00e0bac671e84d62 100644 (file)
@@ -31,7 +31,7 @@ using System.Security.Cryptography.X509Certificates;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Configuration;
 using System.ServiceModel.Description;
-using System.ServiceModel.Security.Tokens;
+using System.ServiceModel.Security.Tokens; 
 
 namespace System.ServiceModel.Security
 {
@@ -57,14 +57,22 @@ namespace System.ServiceModel.Security
                        StoreName storeName, X509FindType findType,
                        object findValue)
                {
+#if !NET_2_1
                        certificate = ConfigUtil.CreateCertificateFrom (storeLocation, storeName, findType, findValue);
+#else
+                       throw new NotImplementedException ();
+#endif
                }
 
                public void SetCertificate (
                        string subjectName, StoreLocation storeLocation,
                        StoreName storeName)
                {
+#if !NET_2_1
                        certificate = ConfigUtil.CreateCertificateFrom (storeLocation, storeName, X509FindType.FindBySubjectName, subjectName);
+#else
+                       throw new NotImplementedException ();
+#endif
                }
        }
 }
index cc4ca154157dfb48a5885ce8ce7434386c91ab90..c6aa5acfa973d46f95fb8ac2e732db1dcebaa45e 100644 (file)
@@ -27,7 +27,9 @@
 //
 using System;
 using System.Collections.Generic;
+#if !NET_2_1
 using System.IdentityModel.Selectors;
+#endif
 using System.Security.Cryptography.X509Certificates;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Configuration;
@@ -47,7 +49,9 @@ namespace System.ServiceModel.Security
                X509Certificate2 certificate;
                Dictionary<Uri,X509Certificate2> scoped =
                        new Dictionary<Uri,X509Certificate2> ();
+#if !NET_2_1
                X509CertificateValidator validator;
+#endif
                X509RevocationMode revocation_mode;
                StoreLocation store_loc;
 
@@ -72,6 +76,13 @@ namespace System.ServiceModel.Security
                        get { return scoped; }
                }
 
+               [MonoTODO]
+               public X509ServiceCertificateAuthentication SslCertificateAuthentication
+               {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
                public void SetDefaultCertificate (string subjectName,
                        StoreLocation storeLocation, StoreName storeName)
                {
@@ -81,7 +92,11 @@ namespace System.ServiceModel.Security
                public void SetDefaultCertificate (StoreLocation storeLocation,
                        StoreName storeName, X509FindType findType, Object findValue)
                {
+#if !NET_2_1
                        DefaultCertificate = ConfigUtil.CreateCertificateFrom (storeLocation, storeName, findType, findValue);
+#else
+                       throw new NotImplementedException ();
+#endif
                }
 
                public void SetScopedCertificate (string subjectName,
@@ -95,7 +110,11 @@ namespace System.ServiceModel.Security
                        StoreName storeName, X509FindType findType,
                        Object findValue, Uri targetService)
                {
+#if !NET_2_1
                        ScopedCertificates [targetService] = ConfigUtil.CreateCertificateFrom (storeLocation, storeName, findType, findValue);
+#else
+                       throw new NotImplementedException ();
+#endif
                }
        }
 }
index 4c3e9d27f7bbb890a05fce06fc1d499de8a3072e..547775642a8b75f9794b74bf2b6d6c5089fd18c7 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Security
        [MonoTODO]
        public class X509ServiceCertificateAuthentication
        {
-               internal X509ServiceCertificateAuthentication ()
+               public X509ServiceCertificateAuthentication ()
                {
                }
 
index 27e5d72869be31fcaab29595d8d140be2524db4b..7500d76322cdc1abb5b123c28fb6f896c3ad22c0 100644 (file)
@@ -62,12 +62,12 @@ namespace System.ServiceModel
                        set { uri = value; }
                }
 
-#if !NET_2_1
                public EndpointIdentity Identity {
                        get { return identity; }
                        set { identity = value; }
                }
 
+#if !NET_2_1
                public XmlDictionaryReader GetReaderAtExtensions ()
                {
                        if (extension == null)
index 6e9a794ee410eac05f81e9e169c62677090b9800..2c9c5bfbc8a074f8f0763dd72987ab71044a8100 100644 (file)
@@ -36,7 +36,7 @@ namespace System.ServiceModel
 #endif
                MessageCredentialType client_credential_type;
 
-               internal MessageSecurityOverTcp ()
+               public MessageSecurityOverTcp ()
                {
 #if !MOBILE && !XAMMAC_4_5
                        alg_suite = SecurityAlgorithmSuite.Default;
index 6d8a1d5aff20a3183334d63da3df6dc3f03c31a6..4f8f3b708df7d9bd683186286820f66dab1ad590 100644 (file)
@@ -27,6 +27,7 @@
 //
 using System;
 using System.Net.Security;
+using System.Security.Authentication;
 using System.ServiceModel.Security;
 
 namespace System.ServiceModel
@@ -44,5 +45,12 @@ namespace System.ServiceModel
                public TcpClientCredentialType ClientCredentialType { get; set; }
 
                public ProtectionLevel ProtectionLevel { get; set; }
+
+               [MonoTODO]
+               public SslProtocols SslProtocols
+               {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
        }
 }
index 6666c86e4845d1fa077bba9db397905c2ad291fc..c614c10beaaf0ca66902d6949a51d1bc51d1fedd 100644 (file)
@@ -179,6 +179,9 @@ System.ServiceModel.Security/MessageSecurityException.cs
 System.ServiceModel.Security/SecurityAccessDeniedException.cs
 System.ServiceModel.Security/UserNamePasswordClientCredential.cs
 System.ServiceModel.Security/WindowsClientCredential.cs
+System.ServiceModel.Security/X509CertificateInitiatorClientCredential.cs
+System.ServiceModel.Security/X509CertificateRecipientClientCredential.cs
+System.ServiceModel.Security/X509ServiceCertificateAuthentication.cs
 System.ServiceModel/ActionNotSupportedException.cs
 System.ServiceModel/AllEnums.cs
 System.ServiceModel/HttpBindingBase.cs
@@ -277,8 +280,11 @@ System.ServiceModel/UpnEndpointIdentity.cs
 System.ServiceModel/MessageSecurityVersion.cs
 
 System.ServiceModel.Security/BasicSecurityProfileVersion.cs
+System.ServiceModel.Security/ChannelProtectionRequirements.cs
 System.ServiceModel.Security/SecurityVersion.cs
 System.ServiceModel.Security/TrustVersion.cs
+System.ServiceModel.Security/MessagePartSpecification.cs
+System.ServiceModel.Security/ScopedMessagePartSpecification.cs
 System.ServiceModel.Security/SecureConversationVersion.cs
 System.ServiceModel.Security/SecurityPolicyVersion.cs
 
index 1e3d2938355fd0a3cda55409a6d8468f51a34708..f5b081aeda63022867e832a90b824e1233c4e4d7 100644 (file)
@@ -32,6 +32,7 @@ System.ServiceModel.Dispatcher/SeekableXPathNavigator.cs
 System.ServiceModel.Dispatcher/XPathMessageFilter.cs
 System.ServiceModel.Security.Tokens/SecurityContextSecurityToken.cs
 System.ServiceModel.Security.Tokens/SslnegoCookieResolver.cs
+System.ServiceModel.Security.Tokens/SupportingTokenParameters.cs
 System.ServiceModel.Security/ChannelProtectionRequirements.cs
 System.ServiceModel.Security/IdentityVerifier.cs
 System.ServiceModel.Security/IssuedTokenClientCredential.cs
diff --git a/mcs/class/System/Mono.Net.Security/AsyncProtocolRequest.cs b/mcs/class/System/Mono.Net.Security/AsyncProtocolRequest.cs
new file mode 100644 (file)
index 0000000..7827d97
--- /dev/null
@@ -0,0 +1,264 @@
+#if SECURITY_DEP
+//
+// AsyncProtocolRequest.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using SD = System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Mono.Net.Security
+{
+       delegate AsyncOperationStatus AsyncOperation (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status);
+
+       class BufferOffsetSize
+       {
+               public byte[] Buffer;
+               public int Offset;
+               public int Size;
+               public int TotalBytes;
+               public bool Complete;
+
+               public int EndOffset {
+                       get { return Offset + Size; }
+               }
+
+               public int Remaining {
+                       get { return Buffer.Length - Offset - Size; }
+               }
+
+               public BufferOffsetSize (byte[] buffer, int offset, int size)
+               {
+                       Buffer = buffer;
+                       Offset = offset;
+                       Size = size;
+                       Complete = false;
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("[BufferOffsetSize: {0} {1}]", Offset, Size);
+               }
+       }
+
+       class BufferOffsetSize2 : BufferOffsetSize
+       {
+               public readonly int InitialSize;
+
+               public BufferOffsetSize2 (int size)
+                       : base (new byte [size], 0, 0)
+               {
+                       InitialSize = size;
+               }
+
+               public void Reset ()
+               {
+                       Offset = Size = 0;
+                       TotalBytes = 0;
+                       Buffer = new byte [InitialSize];
+                       Complete = false;
+               }
+
+               public void MakeRoom (int size)
+               {
+                       if (Remaining >= size)
+                               return;
+
+                       int missing = size - Remaining;
+                       if (Offset == 0 && Size == 0) {
+                               Buffer = new byte [size];
+                               return;
+                       }
+
+                       var buffer = new byte [Buffer.Length + missing];
+                       Buffer.CopyTo (buffer, 0);
+                       Buffer = buffer;
+               }
+
+               public void AppendData (byte[] buffer, int offset, int size)
+               {
+                       MakeRoom (size);
+                       System.Buffer.BlockCopy (buffer, offset, Buffer, EndOffset, size);
+                       Size += size;
+               }
+       }
+
+       enum AsyncOperationStatus {
+               NotStarted,
+               Initialize,
+               Continue,
+               Running,
+               Complete,
+               WantRead,
+               WantWrite,
+               ReadDone
+       }
+
+       class AsyncProtocolRequest
+       {
+               public readonly MobileAuthenticatedStream Parent;
+               public readonly BufferOffsetSize UserBuffer;
+
+               int RequestedSize;
+               public int CurrentSize;
+               public int UserResult;
+
+               AsyncOperation Operation;
+               int Status;
+
+               public readonly int ID = ++next_id;
+               static int next_id;
+
+               public readonly LazyAsyncResult UserAsyncResult;
+
+               public AsyncProtocolRequest (MobileAuthenticatedStream parent, LazyAsyncResult lazyResult, BufferOffsetSize userBuffer = null)
+               {
+                       Parent = parent;
+                       UserAsyncResult = lazyResult;
+                       UserBuffer = userBuffer;
+               }
+
+               public bool CompleteWithError (Exception ex)
+               {
+                       Status = (int)AsyncOperationStatus.Complete;
+                       if (UserAsyncResult == null)
+                               return true;
+                       if (!UserAsyncResult.InternalPeekCompleted)
+                               UserAsyncResult.InvokeCallback (ex);
+                       return false;
+               }
+
+               [SD.Conditional ("MARTIN_DEBUG")]
+               protected void Debug (string message, params object[] args)
+               {
+                       Parent.Debug ("AsyncProtocolRequest({0}:{1}): {2}", Parent.ID, ID, string.Format (message, args));
+               }
+
+               internal void RequestRead (int size)
+               {
+                       var oldStatus = (AsyncOperationStatus)Interlocked.CompareExchange (ref Status, (int)AsyncOperationStatus.WantRead, (int)AsyncOperationStatus.Running);
+                       Debug ("RequestRead: {0} {1}", oldStatus, size);
+                       if (oldStatus == AsyncOperationStatus.Running)
+                               RequestedSize = size;
+                       else if (oldStatus == AsyncOperationStatus.WantRead)
+                               RequestedSize += size;
+                       else if (oldStatus != AsyncOperationStatus.WantWrite)
+                               throw new InvalidOperationException ();
+               }
+
+               internal void ResetRead ()
+               {
+                       var oldStatus = (AsyncOperationStatus)Interlocked.CompareExchange (ref Status, (int)AsyncOperationStatus.Complete, (int)AsyncOperationStatus.WantRead);
+                       Debug ("ResetRead: {0} {1}", oldStatus, Status);
+               }
+
+               internal void RequestWrite ()
+               {
+                       var oldStatus = (AsyncOperationStatus)Interlocked.CompareExchange (ref Status, (int)AsyncOperationStatus.WantWrite, (int)AsyncOperationStatus.Running);
+                       if (oldStatus == AsyncOperationStatus.Running)
+                               return;
+                       else if (oldStatus != AsyncOperationStatus.WantRead && oldStatus != AsyncOperationStatus.WantWrite)
+                               throw new InvalidOperationException ();
+               }
+
+               internal void StartOperation (AsyncOperation operation)
+               {
+                       Debug ("Start Operation: {0} {1}", Status, operation);
+                       if (Interlocked.CompareExchange (ref Status, (int)AsyncOperationStatus.Initialize, (int)AsyncOperationStatus.NotStarted) != (int)AsyncOperationStatus.NotStarted)
+                               throw new InvalidOperationException ();
+
+                       Operation = operation;
+
+                       if (UserAsyncResult == null) {
+                               StartOperation ();
+                               return;
+                       }
+
+                       ThreadPool.QueueUserWorkItem (_ => StartOperation ());
+               }
+
+               void StartOperation ()
+               {
+                       try {
+                               ProcessOperation ();
+                               if (UserAsyncResult != null && !UserAsyncResult.InternalPeekCompleted)
+                                       UserAsyncResult.InvokeCallback (UserResult);
+                       } catch (Exception ex) {
+                               if (UserAsyncResult == null)
+                                       throw;
+                               if (!UserAsyncResult.InternalPeekCompleted)
+                                       UserAsyncResult.InvokeCallback (ex);
+                       }
+               }
+
+               void ProcessOperation ()
+               {
+                       AsyncOperationStatus status;
+                       do {
+                               status = (AsyncOperationStatus)Interlocked.Exchange (ref Status, (int)AsyncOperationStatus.Running);
+
+                               Debug ("ProcessOperation: {0}", status);
+
+                               status = ProcessOperation (status);
+
+                               var oldStatus = (AsyncOperationStatus)Interlocked.CompareExchange (ref Status, (int)status, (int)AsyncOperationStatus.Running);
+                               Debug ("ProcessOperation done: {0} -> {1}", oldStatus, status);
+
+                               if (oldStatus != AsyncOperationStatus.Running) {
+                                       if (status == oldStatus || status == AsyncOperationStatus.Continue || status == AsyncOperationStatus.Complete)
+                                               status = oldStatus;
+                                       else
+                                               throw new InvalidOperationException ();
+                               }
+                       } while (status != AsyncOperationStatus.Complete);
+               }
+
+               AsyncOperationStatus ProcessOperation (AsyncOperationStatus status)
+               {
+                       if (status == AsyncOperationStatus.WantRead) {
+                               if (RequestedSize < 0)
+                                       throw new InvalidOperationException ();
+                               else if (RequestedSize == 0)
+                                       return AsyncOperationStatus.Continue;
+
+                               Debug ("ProcessOperation - read inner: {0}", RequestedSize);
+                               var ret = Parent.InnerRead (RequestedSize);
+                               Debug ("ProcessOperation - read inner done: {0} - {1}", RequestedSize, ret);
+
+                               if (ret < 0)
+                                       return AsyncOperationStatus.ReadDone;
+
+                               RequestedSize -= ret;
+
+                               if (ret == 0 || RequestedSize == 0)
+                                       return AsyncOperationStatus.Continue;
+                               else
+                                       return AsyncOperationStatus.WantRead;
+                       } else if (status == AsyncOperationStatus.WantWrite) {
+                               Parent.InnerWrite ();
+                               return AsyncOperationStatus.Continue;
+                       } else if (status == AsyncOperationStatus.Initialize || status == AsyncOperationStatus.Continue) {
+                               Debug ("ProcessOperation - continue");
+                               status = Operation (this, status);
+                               Debug ("ProcessOperation - continue done: {0}", status);
+                               return status;
+                       } else if (status == AsyncOperationStatus.ReadDone) {
+                               Debug ("ProcessOperation - read done");
+                               status = Operation (this, status);
+                               Debug ("ProcessOperation - read done: {0}", status);
+                               return status;
+                       }
+
+                       throw new InvalidOperationException ();
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs b/mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs
new file mode 100644 (file)
index 0000000..8701ffe
--- /dev/null
@@ -0,0 +1,925 @@
+//
+// MobileAuthenticatedStream.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Globalization;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Security.Cryptography.X509Certificates;
+
+using SD = System.Diagnostics;
+using SSA = System.Security.Authentication;
+using SslProtocols = System.Security.Authentication.SslProtocols;
+
+namespace Mono.Net.Security
+{
+       abstract class MobileAuthenticatedStream : AuthenticatedStream, MSI.IMonoSslStream
+       {
+               MobileTlsContext xobileTlsContext;
+               Exception lastException;
+
+               AsyncProtocolRequest asyncHandshakeRequest;
+               AsyncProtocolRequest asyncReadRequest;
+               AsyncProtocolRequest asyncWriteRequest;
+               BufferOffsetSize2 readBuffer;
+               BufferOffsetSize2 writeBuffer;
+
+               object ioLock = new object ();
+               int closeRequested;
+
+               static int uniqueNameInteger = 123;
+
+               public MobileAuthenticatedStream (Stream innerStream, bool leaveInnerStreamOpen,
+                                                 MSI.MonoTlsSettings settings, MSI.MonoTlsProvider provider)
+                       : base (innerStream, leaveInnerStreamOpen)
+               {
+                       Settings = settings;
+                       Provider = provider;
+
+                       readBuffer = new BufferOffsetSize2 (16834);
+                       writeBuffer = new BufferOffsetSize2 (16384);
+               }
+
+               public MSI.MonoTlsSettings Settings {
+                       get;
+                       private set;
+               }
+
+               public MSI.MonoTlsProvider Provider {
+                       get;
+                       private set;
+               }
+
+               MSI.MonoTlsProvider MSI.IMonoSslStream.Provider {
+                       get { return Provider; }
+               }
+
+               internal bool HasContext {
+                       get { return xobileTlsContext != null; }
+               }
+
+               internal MobileTlsContext Context {
+                       get {
+                               CheckThrow (true);
+                               return xobileTlsContext;
+                       }
+               }
+
+               internal void CheckThrow (bool authSuccessCheck)
+               {
+                       if (closeRequested != 0)
+                               throw new InvalidOperationException ("Stream is closed.");
+                       if (lastException != null)
+                               throw lastException;
+                       if (authSuccessCheck && !IsAuthenticated)
+                               throw new InvalidOperationException ("Must be authenticated.");
+               }
+
+               Exception SetException (Exception e)
+               {
+                       e = SetException_internal (e);
+                       if (e != null && xobileTlsContext != null)
+                               xobileTlsContext.Dispose ();
+                       return e;
+               }
+
+               Exception SetException_internal (Exception e)
+               {
+                       if (lastException == null)
+                               lastException = e;
+                       return lastException;
+               }
+
+               SslProtocols DefaultProtocols {
+                       get { return SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls; }
+               }
+
+               public void AuthenticateAsClient (string targetHost)
+               {
+                       AuthenticateAsClient (targetHost, new X509CertificateCollection (), DefaultProtocols, false);
+               }
+
+               public void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       ValidateCreateContext (false, targetHost, enabledSslProtocols, null, clientCertificates, false);
+                       ProcessAuthentication (null);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginAuthenticateAsClient (targetHost, new X509CertificateCollection (), DefaultProtocols, false, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       ValidateCreateContext (false, targetHost, enabledSslProtocols, null, clientCertificates, false);
+                       var result = new LazyAsyncResult (this, asyncState, asyncCallback);
+                       ProcessAuthentication (result);
+                       return result;
+               }
+
+               public void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       EndProcessAuthentication (asyncResult);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       AuthenticateAsServer (serverCertificate, false, DefaultProtocols, false);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       ValidateCreateContext (true, string.Empty, enabledSslProtocols, serverCertificate, null, clientCertificateRequired);
+                       ProcessAuthentication (null);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginAuthenticateAsServer (serverCertificate, false, DefaultProtocols, false, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       ValidateCreateContext (true, string.Empty, enabledSslProtocols, serverCertificate, null, clientCertificateRequired);
+                       var result = new LazyAsyncResult (this, asyncState, asyncCallback);
+                       ProcessAuthentication (result);
+                       return result;
+               }
+
+               public void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       EndProcessAuthentication (asyncResult);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Task.Factory.FromAsync (BeginAuthenticateAsClient, EndAuthenticateAsClient, targetHost, null);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Task.Factory.FromAsync ((callback, state) => BeginAuthenticateAsClient (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, callback, state), EndAuthenticateAsClient, null);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Task.Factory.FromAsync (BeginAuthenticateAsServer, EndAuthenticateAsServer, serverCertificate, null);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Task.Factory.FromAsync ((callback, state) => BeginAuthenticateAsServer (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, callback, state), EndAuthenticateAsServer, null);
+               }
+
+               public AuthenticatedStream AuthenticatedStream {
+                       get { return this; }
+               }
+
+               internal void ProcessAuthentication (LazyAsyncResult lazyResult)
+               {
+                       var asyncRequest = new AsyncProtocolRequest (this, lazyResult);
+                       if (Interlocked.CompareExchange (ref asyncHandshakeRequest, asyncRequest, null) != null)
+                               throw new InvalidOperationException ("Invalid nested call.");
+
+                       try {
+                               if (lastException != null)
+                                       throw lastException;
+                               if (xobileTlsContext == null)
+                                       throw new InvalidOperationException ();
+
+                               readBuffer.Reset ();
+                               writeBuffer.Reset ();
+
+                               try {
+                                       asyncRequest.StartOperation (ProcessHandshake);
+                               } catch (Exception ex) {
+                                       throw SetException (ex);
+                               }
+                       } finally {
+                               if (lazyResult == null || lastException != null) {
+                                       readBuffer.Reset ();
+                                       writeBuffer.Reset ();
+                                       asyncHandshakeRequest = null;
+                               }
+                       }
+               }
+
+               internal void EndProcessAuthentication (IAsyncResult result)
+               {
+                       if (result == null)
+                               throw new ArgumentNullException ("asyncResult");
+
+                       var lazyResult = (LazyAsyncResult)result;
+                       if (Interlocked.Exchange (ref asyncHandshakeRequest, null) == null)
+                               throw new InvalidOperationException ("Invalid end call.");
+
+                       lazyResult.InternalWaitForCompletion ();
+
+                       readBuffer.Reset ();
+                       writeBuffer.Reset ();
+
+                       var e = lazyResult.Result as Exception;
+                       if (e != null)
+                               throw SetException (e);
+               }
+
+               internal void ValidateCreateContext (bool serverMode, string targetHost, SslProtocols enabledProtocols, X509Certificate serverCertificate, X509CertificateCollection clientCertificates, bool clientCertRequired)
+               {
+                       if (xobileTlsContext != null)
+                               throw new InvalidOperationException ();
+
+                       if (serverMode) {
+                               if (serverCertificate == null)
+                                       throw new ArgumentException ("serverCertificate");
+                       } else {                                
+                               if (targetHost == null)
+                                       throw new ArgumentException ("targetHost");
+                               if (targetHost.Length == 0)
+                                       targetHost = "?" + Interlocked.Increment (ref uniqueNameInteger).ToString (NumberFormatInfo.InvariantInfo);
+                       }
+
+                       xobileTlsContext = CreateContext (this, serverMode, targetHost, enabledProtocols, serverCertificate, clientCertificates, clientCertRequired);
+               }
+
+               protected abstract MobileTlsContext CreateContext (
+                       MobileAuthenticatedStream parent, bool serverMode, string targetHost,
+                       SSA.SslProtocols enabledProtocols, X509Certificate serverCertificate,
+                       X509CertificateCollection clientCertificates, bool askForClientCert);
+
+               public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginReadOrWrite (ref asyncReadRequest, ref readBuffer, ProcessRead, new BufferOffsetSize (buffer, offset, count), asyncCallback, asyncState);
+               }
+
+               public override int EndRead (IAsyncResult asyncResult)
+               {
+                       return (int)EndReadOrWrite (asyncResult, ref asyncReadRequest);
+               }
+
+               public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginReadOrWrite (ref asyncWriteRequest, ref writeBuffer, ProcessWrite, new BufferOffsetSize (buffer, offset, count), asyncCallback, asyncState);
+               }
+
+               public override void EndWrite (IAsyncResult asyncResult)
+               {
+                       EndReadOrWrite (asyncResult, ref asyncWriteRequest);
+               }
+
+               public override int Read (byte[] buffer, int offset, int count)
+               {
+                       return ProcessReadOrWrite (ref asyncReadRequest, ref readBuffer, ProcessRead, new BufferOffsetSize (buffer, offset, count), null);
+               }
+
+               public void Write (byte[] buffer)
+               {
+                       Write (buffer, 0, buffer.Length);
+               }
+               public override void Write (byte[] buffer, int offset, int count)
+               {
+                       ProcessReadOrWrite (ref asyncWriteRequest, ref writeBuffer, ProcessWrite, new BufferOffsetSize (buffer, offset, count), null);
+               }
+
+               IAsyncResult BeginReadOrWrite (ref AsyncProtocolRequest nestedRequest, ref BufferOffsetSize2 internalBuffer, AsyncOperation operation, BufferOffsetSize userBuffer, AsyncCallback asyncCallback, object asyncState)
+               {
+                       LazyAsyncResult lazyResult = new LazyAsyncResult (this, asyncState, asyncCallback);
+                       ProcessReadOrWrite (ref nestedRequest, ref internalBuffer, operation, userBuffer, lazyResult);
+                       return lazyResult;
+               }
+
+               object EndReadOrWrite (IAsyncResult asyncResult, ref AsyncProtocolRequest nestedRequest)
+               {
+                       if (asyncResult == null)
+                               throw new ArgumentNullException("asyncResult");
+
+                       var lazyResult = (LazyAsyncResult)asyncResult;
+
+                       if (Interlocked.Exchange (ref nestedRequest, null) == null)
+                               throw new InvalidOperationException ("Invalid end call.");
+
+                       // No "artificial" timeouts implemented so far, InnerStream controls timeout.
+                       lazyResult.InternalWaitForCompletion ();
+
+                       Debug ("EndReadOrWrite");
+
+                       var e = lazyResult.Result as Exception;
+                       if (e != null) {
+                               var ioEx = e as IOException;
+                               if (ioEx != null)
+                                       throw ioEx;
+                               throw new IOException ("read failed", e);
+                       }
+
+                       return lazyResult.Result;
+               }
+
+               int ProcessReadOrWrite (ref AsyncProtocolRequest nestedRequest, ref BufferOffsetSize2 internalBuffer, AsyncOperation operation, BufferOffsetSize userBuffer, LazyAsyncResult lazyResult)
+               {
+                       if (userBuffer == null || userBuffer.Buffer == null)
+                               throw new ArgumentNullException ("buffer");
+                       if (userBuffer.Offset < 0)
+                               throw new ArgumentOutOfRangeException ("offset");
+                       if (userBuffer.Size < 0 || userBuffer.Offset + userBuffer.Size > userBuffer.Buffer.Length)
+                               throw new ArgumentOutOfRangeException ("count");
+
+                       CheckThrow (true);
+
+                       var name = internalBuffer == readBuffer ? "read" : "write";
+                       Debug ("ProcessReadOrWrite: {0} {1}", name, userBuffer);
+
+                       var asyncRequest = new AsyncProtocolRequest (this, lazyResult, userBuffer);
+                       return StartOperation (ref nestedRequest, ref internalBuffer, operation, asyncRequest, name);
+               }
+
+               int StartOperation (ref AsyncProtocolRequest nestedRequest, ref BufferOffsetSize2 internalBuffer, AsyncOperation operation, AsyncProtocolRequest asyncRequest, string name)
+               {
+                       if (Interlocked.CompareExchange (ref nestedRequest, asyncRequest, null) != null)
+                               throw new InvalidOperationException ("Invalid nested call.");
+
+                       bool failed = false;
+                       try {
+                               internalBuffer.Reset ();
+                               asyncRequest.StartOperation (operation);
+                               return asyncRequest.UserResult;
+                       } catch (Exception e) {
+                               failed = true;
+                               if (e is IOException)
+                                       throw;
+                               throw new IOException (name + " failed", e);
+                       } finally {
+                               if (asyncRequest.UserAsyncResult == null || failed) {
+                                       internalBuffer.Reset ();
+                                       nestedRequest = null;
+                               }
+                       }
+               }
+
+               static int nextId;
+               internal readonly int ID = ++nextId;
+
+               [SD.Conditional ("MARTIN_DEBUG")]
+               protected internal void Debug (string message, params object[] args)
+               {
+                       Console.Error.WriteLine ("MobileAuthenticatedStream({0}): {1}", ID, string.Format (message, args));
+               }
+
+               #region Called back from native code via SslConnection
+
+               /*
+                * Called from within SSLRead() and SSLHandshake().  We only access tha managed byte[] here.
+                */
+               internal int InternalRead (byte[] buffer, int offset, int size, out bool wantMore)
+               {
+                       try {
+                               Debug ("InternalRead: {0} {1} {2} {3}", offset, size, asyncReadRequest != null, readBuffer != null);
+                               var asyncRequest = asyncHandshakeRequest ?? asyncReadRequest;
+                               return InternalRead (asyncRequest, readBuffer, buffer, offset, size, out wantMore);
+                       } catch (Exception ex) {
+                               Debug ("InternalRead failed: {0}", ex);
+                               SetException_internal (ex);
+                               wantMore = false;
+                               return -1;
+                       }
+               }
+
+               int InternalRead (AsyncProtocolRequest asyncRequest, BufferOffsetSize internalBuffer, byte[] buffer, int offset, int size, out bool wantMore)
+               {
+                       if (asyncRequest == null)
+                               throw new InvalidOperationException ();
+
+                       Debug ("InternalRead: {0} {1} {2}", internalBuffer, offset, size);
+
+                       /*
+                        * One of Apple's native functions wants to read 'size' bytes of data.
+                        *
+                        * First, we check whether we already have enough in the internal buffer.
+                        *
+                        * If the internal buffer is empty (it will be the first time we're called), we save
+                        * the amount of bytes that were requested and return 'SslStatus.WouldBlock' to our
+                        * native caller.  This native function will then return this code to managed code,
+                        * where we read the requested amount of data into the internal buffer, then call the
+                        * native function again.
+                        */
+                       if (internalBuffer.Size == 0 && !internalBuffer.Complete) {
+                               Debug ("InternalRead #1: {0} {1}", internalBuffer.Offset, internalBuffer.TotalBytes);
+                               internalBuffer.Offset = internalBuffer.Size = 0;
+                               asyncRequest.RequestRead (size);
+                               wantMore = true;
+                               return 0;
+                       }
+
+                       /*
+                        * The second time we're called, the native buffer will contain the exact amount of data that the
+                        * previous call requested from us, so we should be able to return it all here.  However, just in
+                        * case that Apple's native function changed its mind, we can also return less.
+                        *
+                        * In either case, if we have any data buffered, then we return as much of it as possible - if the
+                        * native code isn't satisfied, then it will call us again to request more.
+                        */
+                       var len = System.Math.Min (internalBuffer.Size, size);
+                       Buffer.BlockCopy (internalBuffer.Buffer, internalBuffer.Offset, buffer, offset, len);
+                       internalBuffer.Offset += len;
+                       internalBuffer.Size -= len;
+                       wantMore = !internalBuffer.Complete && len < size;
+                       return len;
+               }
+
+               /*
+                * We may get called from SSLWrite(), SSLHandshake() or SSLClose().
+                */
+               internal bool InternalWrite (byte[] buffer, int offset, int size)
+               {
+                       try {
+                               Debug ("InternalWrite: {0} {1}", offset, size);
+                               var asyncRequest = asyncHandshakeRequest ?? asyncWriteRequest;
+                               return InternalWrite (asyncRequest, writeBuffer, buffer, offset, size);
+                       } catch (Exception ex) {
+                               Debug ("InternalWrite failed: {0}", ex);
+                               SetException_internal (ex);
+                               return false;
+                       }
+               }
+
+               bool InternalWrite (AsyncProtocolRequest asyncRequest, BufferOffsetSize2 internalBuffer, byte[] buffer, int offset, int size)
+               {
+                       Debug ("InternalWrite: {0} {1} {2} {3}", asyncRequest != null, internalBuffer, offset, size);
+
+                       if (asyncRequest == null) {
+                               /*
+                                * The only situation where 'asyncRequest' could possibly be 'null' is when we're called
+                                * from within SSLClose() - which might attempt to send the close_notity notification.
+                                * Since this notification message is very small, it should definitely fit into our internal
+                                * buffer, so we just save it in there and after SSLClose() returns, the final call to
+                                * InternalFlush() - just before closing the underlying stream - will send it out.
+                                */
+                               if (lastException != null)
+                                       return false;
+
+                               if (Interlocked.Exchange (ref closeRequested, 1) == 0)
+                                       internalBuffer.Reset ();
+                               else if (internalBuffer.Remaining == 0)
+                                       throw new InvalidOperationException ();
+                       }
+
+                       /*
+                        * Normal write - can be either SSLWrite() or SSLHandshake().
+                        *
+                        * It is important that we always accept all the data and queue it.
+                        */
+
+                       internalBuffer.AppendData (buffer, offset, size);
+
+                       /*
+                        * Calling 'asyncRequest.RequestWrite()' here ensures that ProcessWrite() is called next
+                        * time we regain control from native code.
+                        *
+                        * During the handshake, the native code won't actually realize (unless if attempts to send
+                        * so much that the write buffer gets full) that we only buffered the data.
+                        *
+                        * However, it doesn't matter because it will either return with a completed handshake
+                        * (and doesn't care whether the remote actually received the data) or it will expect more
+                        * data from the remote and request a read.  In either case, we regain control in managed
+                        * code and can flush out the data.
+                        *
+                        * Note that a calling RequestWrite() followed by RequestRead() will first flush the write
+                        * queue once we return to managed code - before attempting to read anything.
+                        */
+                       if (asyncRequest != null)
+                               asyncRequest.RequestWrite ();
+
+                       return true;
+               }
+
+               #endregion
+
+               #region Inner Stream
+
+               /*
+                * Read / write data from the inner stream; we're only called from managed code and only manipulate
+                * the internal buffers.
+                */
+               internal int InnerRead (int requestedSize)
+               {
+                       Debug ("InnerRead: {0} {1} {2} {3}", readBuffer.Offset, readBuffer.Size, readBuffer.Remaining, requestedSize);
+
+                       var len = System.Math.Min (readBuffer.Remaining, requestedSize);
+                       if (len == 0)
+                               throw new InvalidOperationException ();
+                       var ret = InnerStream.Read (readBuffer.Buffer, readBuffer.EndOffset, len);
+                       Debug ("InnerRead done: {0} {1} - {2}", readBuffer.Remaining, len, ret);
+
+                       if (ret >= 0) {
+                               readBuffer.Size += ret;
+                               readBuffer.TotalBytes += ret;
+                       }
+
+                       if (ret == 0) {
+                               readBuffer.Complete = true;
+                               Debug ("InnerRead - end of stream!");
+                               /*
+                                * Try to distinguish between a graceful close - first Read() returned 0 - and
+                                * the remote prematurely closing the connection without sending us all data.
+                                */
+                               if (readBuffer.TotalBytes > 0)
+                                       ret = -1;
+                       }
+
+                       Debug ("InnerRead done: {0} - {1} {2}", readBuffer, len, ret);
+                       return ret;
+               }
+
+               internal void InnerWrite ()
+               {
+                       Debug ("InnerWrite: {0} {1}", writeBuffer.Offset, writeBuffer.Size);
+                       InnerFlush ();
+               }
+
+               internal void InnerFlush ()
+               {
+                       if (writeBuffer.Size > 0) {
+                               InnerStream.Write (writeBuffer.Buffer, writeBuffer.Offset, writeBuffer.Size);
+                               writeBuffer.TotalBytes += writeBuffer.Size;
+                               writeBuffer.Offset = writeBuffer.Size = 0;
+                       }
+               }
+
+               #endregion
+
+               #region Main async I/O loop
+
+               AsyncOperationStatus ProcessHandshake (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status)
+               {
+                       Debug ("ProcessHandshake: {0}", status);
+
+                       /*
+                        * The first time we're called (AsyncOperationStatus.Initialize), we need to setup the SslContext and
+                        * start the handshake.
+                       */
+                       if (status == AsyncOperationStatus.Initialize) {
+                               xobileTlsContext.StartHandshake ();
+                               return AsyncOperationStatus.Continue;
+                       } else if (status == AsyncOperationStatus.ReadDone) {
+                               // remote prematurely closed connection.
+                               throw new IOException ("Remote prematurely closed connection.");
+                       } else if (status != AsyncOperationStatus.Continue) {
+                               throw new InvalidOperationException ();
+                       }
+
+                       /*
+                        * SSLHandshake() will return repeatedly with 'SslStatus.WouldBlock', we then need
+                        * to take care of I/O and call it again.
+                       */
+                       if (!xobileTlsContext.ProcessHandshake ()) {
+                               /*
+                                * Flush the internal write buffer.
+                                */
+                               InnerFlush ();
+                               return AsyncOperationStatus.Continue;
+                       }
+
+                       xobileTlsContext.FinishHandshake ();
+                       return AsyncOperationStatus.Complete;
+               }
+
+               AsyncOperationStatus ProcessRead (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status)
+               {
+                       Debug ("ProcessRead - read user: {0} {1}", status, asyncRequest.UserBuffer);
+
+                       int ret;
+                       bool wantMore;
+                       lock (ioLock) {
+                               ret = Context.Read (asyncRequest.UserBuffer.Buffer, asyncRequest.UserBuffer.Offset, asyncRequest.UserBuffer.Size, out wantMore);
+                       }
+                       Debug ("ProcessRead - read user done: {0} - {1} {2}", asyncRequest.UserBuffer, ret, wantMore);
+
+                       if (ret < 0) {
+                               asyncRequest.UserResult = -1;
+                               return AsyncOperationStatus.Complete;
+                       }
+
+                       asyncRequest.CurrentSize += ret;
+                       asyncRequest.UserBuffer.Offset += ret;
+                       asyncRequest.UserBuffer.Size -= ret;
+
+                       Debug ("Process Read - read user done #1: {0} - {1} {2}", asyncRequest.UserBuffer, asyncRequest.CurrentSize, wantMore);
+
+                       if (wantMore && asyncRequest.CurrentSize == 0)
+                               return AsyncOperationStatus.WantRead;
+
+                       asyncRequest.ResetRead ();
+                       asyncRequest.UserResult = asyncRequest.CurrentSize;
+                       return AsyncOperationStatus.Complete;
+               }
+
+               AsyncOperationStatus ProcessWrite (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status)
+               {
+                       Debug ("ProcessWrite - write user: {0} {1}", status, asyncRequest.UserBuffer);
+
+                       if (asyncRequest.UserBuffer.Size == 0) {
+                               asyncRequest.UserResult = asyncRequest.CurrentSize;
+                               return AsyncOperationStatus.Complete;
+                       }
+
+                       int ret;
+                       bool wantMore;
+                       lock (ioLock) {
+                               ret = Context.Write (asyncRequest.UserBuffer.Buffer, asyncRequest.UserBuffer.Offset, asyncRequest.UserBuffer.Size, out wantMore);
+                       }
+                       Debug ("ProcessWrite - write user done: {0} - {1} {2}", asyncRequest.UserBuffer, ret, wantMore);
+
+                       if (ret < 0) {
+                               asyncRequest.UserResult = -1;
+                               return AsyncOperationStatus.Complete;
+                       }
+
+                       asyncRequest.CurrentSize += ret;
+                       asyncRequest.UserBuffer.Offset += ret;
+                       asyncRequest.UserBuffer.Size -= ret;
+
+                       if (wantMore || writeBuffer.Size > 0)
+                               return AsyncOperationStatus.WantWrite;
+
+                       asyncRequest.UserResult = asyncRequest.CurrentSize;
+                       return AsyncOperationStatus.Complete;
+               }
+
+               AsyncOperationStatus ProcessClose (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status)
+               {
+                       Debug ("ProcessClose: {0}", status);
+
+                       lock (ioLock) {
+                               if (xobileTlsContext == null)
+                                       return AsyncOperationStatus.Complete;
+
+                               xobileTlsContext.Close ();
+                               xobileTlsContext = null;
+                               return AsyncOperationStatus.Continue;
+                       }
+               }
+
+               AsyncOperationStatus ProcessFlush (AsyncProtocolRequest asyncRequest, AsyncOperationStatus status)
+               {
+                       Debug ("ProcessFlush: {0}", status);
+                       return AsyncOperationStatus.Complete;
+               }
+
+               #endregion
+
+               public override bool IsServer {
+                       get { return xobileTlsContext != null && xobileTlsContext.IsServer; }
+               }
+
+               public override bool IsAuthenticated {
+                       get { return xobileTlsContext != null && lastException == null && xobileTlsContext.IsAuthenticated; }
+               }
+
+               public override bool IsMutuallyAuthenticated {
+                       get {
+                               return IsAuthenticated &&
+                                       (Context.IsServer? Context.LocalServerCertificate: Context.LocalClientCertificate) != null &&
+                                       Context.IsRemoteCertificateAvailable;
+                       }
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+                       try {
+                               lastException = new ObjectDisposedException ("MobileAuthenticatedStream");
+                               lock (ioLock) {
+                                       if (xobileTlsContext != null) {
+                                               xobileTlsContext.Dispose ();
+                                               xobileTlsContext = null;
+                                       }
+                               }
+                       } finally {
+                               base.Dispose (disposing);
+                       }
+               }
+
+               public override void Flush ()
+               {
+                       CheckThrow (true);
+                       var asyncRequest = new AsyncProtocolRequest (this, null);
+                       StartOperation (ref asyncWriteRequest, ref writeBuffer, ProcessFlush, asyncRequest, "flush");
+               }
+
+               public override void Close ()
+               {
+                       /*
+                        * SSLClose() is a little bit tricky as it might attempt to send a close_notify alert
+                        * and thus call our write callback.
+                        *
+                        * It is also not thread-safe with SSLRead() or SSLWrite(), so we need to take the I/O lock here.
+                        */
+                       if (Interlocked.Exchange (ref closeRequested, 1) == 1)
+                               return;
+                       if (xobileTlsContext == null)
+                               return;
+
+                       var asyncRequest = new AsyncProtocolRequest (this, null);
+                       StartOperation (ref asyncWriteRequest, ref writeBuffer, ProcessClose, asyncRequest, "close");
+               }
+
+               //
+               // 'xobileTlsContext' must not be accessed below this point.
+               //
+
+               public override long Seek (long offset, SeekOrigin origin)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               public override void SetLength (long value)
+               {
+                       InnerStream.SetLength (value);
+               }
+
+               public TransportContext TransportContext {
+                       get { throw new NotSupportedException (); }
+               }
+
+               public override bool CanRead {
+                       get { return IsAuthenticated && InnerStream.CanRead; }
+               }
+
+               public override bool CanTimeout {
+                       get { return InnerStream.CanTimeout; }
+               }
+
+               public override bool CanWrite {
+                       get { return IsAuthenticated & InnerStream.CanWrite; }
+               }
+
+               public override bool CanSeek {
+                       get { return false; }
+               }
+
+               public override long Length {
+                       get { return InnerStream.Length; }
+               }
+
+               public override long Position {
+                       get { return InnerStream.Position; }
+                       set { throw new NotSupportedException (); }
+               }
+
+               public override bool IsEncrypted {
+                       get { return IsAuthenticated; }
+               }
+
+               public override bool IsSigned {
+                       get { return IsAuthenticated; }
+               }
+
+               public override int ReadTimeout {
+                       get { return InnerStream.ReadTimeout; }
+                       set { InnerStream.ReadTimeout = value; }
+               }
+
+               public override int WriteTimeout {
+                       get { return InnerStream.WriteTimeout; }
+                       set { InnerStream.WriteTimeout = value; }
+               }
+
+               public SslProtocols SslProtocol {
+                       get {
+                               CheckThrow (true);
+                               return (SslProtocols)Context.NegotiatedProtocol;
+                       }
+               }
+
+               public X509Certificate RemoteCertificate {
+                       get {
+                               CheckThrow (true);
+                               return Context.RemoteCertificate;
+                       }
+               }
+
+               public X509Certificate LocalCertificate {
+                       get {
+                               CheckThrow (true);
+                               return InternalLocalCertificate;
+                       }
+               }
+
+               public X509Certificate InternalLocalCertificate {
+                       get {
+                               CheckThrow (false);
+                               if (!HasContext)
+                                       return null;
+                               return Context.IsServer ? Context.LocalServerCertificate : Context.LocalClientCertificate;
+                       }
+               }
+
+               public MSI.MonoTlsConnectionInfo GetConnectionInfo ()
+               {
+                       CheckThrow (true);
+                       return Context.ConnectionInfo;
+               }
+
+               public SSA.CipherAlgorithmType CipherAlgorithm {
+                       get {
+                               CheckThrow (true);
+                               var info = Context.ConnectionInfo;
+                               if (info == null)
+                                       return SSA.CipherAlgorithmType.None;
+                               switch (info.CipherAlgorithmType) {
+                               case MSI.CipherAlgorithmType.Aes128:
+                               case MSI.CipherAlgorithmType.AesGcm128:
+                                       return SSA.CipherAlgorithmType.Aes128;
+                               case MSI.CipherAlgorithmType.Aes256:
+                               case MSI.CipherAlgorithmType.AesGcm256:
+                                       return SSA.CipherAlgorithmType.Aes256;
+                               default:
+                                       return SSA.CipherAlgorithmType.None;
+                               }
+                       }
+               }
+
+               public SSA.HashAlgorithmType HashAlgorithm {
+                       get {
+                               CheckThrow (true);
+                               var info = Context.ConnectionInfo;
+                               if (info == null)
+                                       return SSA.HashAlgorithmType.None;
+                               switch (info.HashAlgorithmType) {
+                               case MSI.HashAlgorithmType.Md5:
+                               case MSI.HashAlgorithmType.Md5Sha1:
+                                       return SSA.HashAlgorithmType.Md5;
+                               case MSI.HashAlgorithmType.Sha1:
+                               case MSI.HashAlgorithmType.Sha224:
+                               case MSI.HashAlgorithmType.Sha256:
+                               case MSI.HashAlgorithmType.Sha384:
+                               case MSI.HashAlgorithmType.Sha512:
+                                       return SSA.HashAlgorithmType.Sha1;
+                               default:
+                                       return SSA.HashAlgorithmType.None;
+                               }
+                       }
+               }
+
+               public SSA.ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get {
+                               CheckThrow (true);
+                               var info = Context.ConnectionInfo;
+                               if (info == null)
+                                       return SSA.ExchangeAlgorithmType.None;
+                               switch (info.ExchangeAlgorithmType) {
+                               case MSI.ExchangeAlgorithmType.Rsa:
+                                       return SSA.ExchangeAlgorithmType.RsaSign;
+                               case MSI.ExchangeAlgorithmType.Dhe:
+                               case MSI.ExchangeAlgorithmType.EcDhe:
+                                       return SSA.ExchangeAlgorithmType.DiffieHellman;
+                               default:
+                                       return SSA.ExchangeAlgorithmType.None;
+                               }
+                       }
+               }
+
+               #region Need to Implement
+               public int CipherStrength {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public int HashStrength {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public int KeyExchangeStrength {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public bool CheckCertRevocationStatus {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               #endregion
+       }
+}
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs b/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs
new file mode 100644 (file)
index 0000000..677a510
--- /dev/null
@@ -0,0 +1,204 @@
+//
+// MobileTlsContext.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+
+using System;
+using System.IO;
+using SD = System.Diagnostics;
+using System.Collections;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security
+{
+       abstract class MobileTlsContext : IDisposable
+       {
+               MobileAuthenticatedStream parent;
+               bool serverMode;
+               string targetHost;
+               SslProtocols enabledProtocols;
+               X509Certificate serverCertificate;
+               X509CertificateCollection clientCertificates;
+               bool askForClientCert;
+               ICertificateValidator2 certificateValidator;
+
+               public MobileTlsContext (
+                       MobileAuthenticatedStream parent, bool serverMode, string targetHost,
+                       SslProtocols enabledProtocols, X509Certificate serverCertificate,
+                       X509CertificateCollection clientCertificates, bool askForClientCert)
+               {
+                       this.parent = parent;
+                       this.serverMode = serverMode;
+                       this.targetHost = targetHost;
+                       this.enabledProtocols = enabledProtocols;
+                       this.serverCertificate = serverCertificate;
+                       this.clientCertificates = clientCertificates;
+                       this.askForClientCert = askForClientCert;
+
+                       certificateValidator = CertificateValidationHelper.GetDefaultValidator (
+                               parent.Settings, parent.Provider);
+               }
+
+               internal MobileAuthenticatedStream Parent {
+                       get { return parent; }
+               }
+
+               public MonoTlsSettings Settings {
+                       get { return parent.Settings; }
+               }
+
+               public MonoTlsProvider Provider {
+                       get { return parent.Provider; }
+               }
+
+               [SD.Conditional ("MARTIN_DEBUG")]
+               protected void Debug (string message, params object[] args)
+               {
+                       Console.Error.WriteLine ("{0}: {1}", GetType ().Name, string.Format (message, args));
+               }
+
+               public abstract bool HasContext {
+                       get;
+               }
+
+               public abstract bool IsAuthenticated {
+                       get;
+               }
+
+               public bool IsServer {
+                       get { return serverMode; }
+               }
+
+               protected string TargetHost {
+                       get { return targetHost; }
+               }
+
+               protected bool AskForClientCertificate {
+                       get { return askForClientCert; }
+               }
+
+               protected SslProtocols EnabledProtocols {
+                       get { return enabledProtocols; }
+               }
+
+               protected X509CertificateCollection ClientCertificates {
+                       get { return clientCertificates; }
+               }
+
+               protected void GetProtocolVersions (out TlsProtocolCode min, out TlsProtocolCode max)
+               {
+                       if ((enabledProtocols & SslProtocols.Tls) != 0)
+                               min = TlsProtocolCode.Tls10;
+                       else if ((enabledProtocols & SslProtocols.Tls11) != 0)
+                               min = TlsProtocolCode.Tls11;
+                       else
+                               min = TlsProtocolCode.Tls12;
+
+                       if ((enabledProtocols & SslProtocols.Tls12) != 0)
+                               max = TlsProtocolCode.Tls12;
+                       else if ((enabledProtocols & SslProtocols.Tls11) != 0)
+                               max = TlsProtocolCode.Tls11;
+                       else
+                               max = TlsProtocolCode.Tls10;
+               }
+
+               public abstract void StartHandshake ();
+
+               public abstract bool ProcessHandshake ();
+
+               public abstract void FinishHandshake ();
+
+               public abstract MonoTlsConnectionInfo ConnectionInfo {
+                       get;
+               }
+
+               internal X509Certificate LocalServerCertificate {
+                       get { return serverCertificate; }
+               }
+
+               internal abstract bool IsRemoteCertificateAvailable {
+                       get;
+               }
+
+               internal abstract X509Certificate LocalClientCertificate {
+                       get;
+               }
+
+               public abstract X509Certificate RemoteCertificate {
+                       get;
+               }
+
+               public abstract TlsProtocols NegotiatedProtocol {
+                       get;
+               }
+
+               public abstract void Flush ();
+
+               public abstract int Read (byte[] buffer, int offset, int count, out bool wantMore);
+
+               public abstract int Write (byte[] buffer, int offset, int count, out bool wantMore);
+
+               public abstract void Close ();
+
+               protected ValidationResult ValidateCertificate (X509Certificate leaf, X509Chain chain)
+               {
+                       return certificateValidator.ValidateCertificate (
+                               targetHost, serverMode, leaf, chain);
+               }
+
+               protected X509Certificate SelectClientCertificate (string[] acceptableIssuers)
+                {
+                        X509Certificate certificate;
+                        var selected = certificateValidator.SelectClientCertificate (
+                               targetHost, clientCertificates, serverCertificate,
+                               null, out certificate);
+                        if (selected)
+                                return certificate;
+
+                        if (clientCertificates == null || clientCertificates.Count == 0)
+                                return null;
+
+                        if (clientCertificates.Count == 1)
+                                return clientCertificates [0];
+
+                        // FIXME: select one.
+                        throw new NotImplementedException ();
+                }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+               }
+
+               ~MobileTlsContext ()
+               {
+                       Dispose (false);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs b/mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs
deleted file mode 100644 (file)
index 7ea40e1..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// MonoDefaultTlsProvider.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2015 Xamarin, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-#if SECURITY_DEP
-#if MONO_SECURITY_ALIAS
-extern alias MonoSecurity;
-#endif
-
-using XHttpWebRequest = System.Net.HttpWebRequest;
-using XSslProtocols = System.Security.Authentication.SslProtocols;
-using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
-
-#if MONO_SECURITY_ALIAS
-using MonoSecurity::Mono.Security.Interface;
-#else
-using Mono.Security.Interface;
-#endif
-
-using System;
-using System.IO;
-using System.Net;
-using System.Net.Security;
-using System.Security.Cryptography.X509Certificates;
-
-namespace Mono.Net.Security.Private
-{
-       /*
-        * Strictly private - do not use outside the Mono.Net.Security directory.
-        */
-       class MonoDefaultTlsProvider : MonoTlsProviderImpl
-       {
-               static readonly Guid id = new Guid ("809e77d5-56cc-4da8-b9f0-45e65ba9cceb");
-
-               public override Guid ID {
-                       get { return id; }
-               }
-
-               public override string Name {
-                       get { return "legacy"; }
-               }
-
-               public MonoTlsProvider Provider {
-                       get { return this; }
-               }
-
-               public override bool SupportsSslStream {
-                       get { return true; }
-               }
-
-               public override bool SupportsConnectionInfo {
-                       get { return false; }
-               }
-
-               public override bool SupportsMonoExtensions {
-                       get { return false; }
-               }
-
-               internal override bool SupportsTlsContext {
-                       get { return false; }
-               }
-
-               public override XSslProtocols SupportedProtocols {
-                       get { return XSslProtocols.Ssl3 | XSslProtocols.Tls; }
-               }
-
-               protected override IMonoSslStream CreateSslStreamImpl (
-                       Stream innerStream, bool leaveInnerStreamOpen,
-                       MonoTlsSettings settings)
-               {
-                       return new LegacySslStream (innerStream, leaveInnerStreamOpen, this, settings);
-               }
-
-               protected override IMonoTlsContext CreateTlsContextImpl (
-                       string hostname, bool serverMode, TlsProtocols protocolFlags,
-                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
-                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
-                       MonoTlsSettings settings)
-               {
-                       throw new NotSupportedException ();
-               }
-       }
-}
-#endif
-
diff --git a/mcs/class/System/Mono.Net.Security/MonoLegacyTlsProvider.cs b/mcs/class/System/Mono.Net.Security/MonoLegacyTlsProvider.cs
new file mode 100644 (file)
index 0000000..9a97195
--- /dev/null
@@ -0,0 +1,106 @@
+//
+// MonoLegacyTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+using XHttpWebRequest = System.Net.HttpWebRequest;
+using XSslProtocols = System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       class MonoLegacyTlsProvider : MonoTlsProviderImpl
+       {
+               static readonly Guid id = new Guid ("809e77d5-56cc-4da8-b9f0-45e65ba9cceb");
+
+               public override Guid ID {
+                       get { return id; }
+               }
+
+               public override string Name {
+                       get { return "legacy"; }
+               }
+
+               public MonoTlsProvider Provider {
+                       get { return this; }
+               }
+
+               public override bool SupportsSslStream {
+                       get { return true; }
+               }
+
+               public override bool SupportsConnectionInfo {
+                       get { return false; }
+               }
+
+               public override bool SupportsMonoExtensions {
+                       get { return false; }
+               }
+
+               internal override bool SupportsTlsContext {
+                       get { return false; }
+               }
+
+               public override XSslProtocols SupportedProtocols {
+                       get { return XSslProtocols.Ssl3 | XSslProtocols.Tls; }
+               }
+
+               protected override IMonoSslStream CreateSslStreamImpl (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings)
+               {
+                       return new LegacySslStream (innerStream, leaveInnerStreamOpen, this, settings);
+               }
+
+               protected override IMonoTlsContext CreateTlsContextImpl (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
+                       MonoTlsSettings settings)
+               {
+                       throw new NotSupportedException ();
+               }
+       }
+}
+#endif
+
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Apple.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Apple.cs
new file mode 100644 (file)
index 0000000..89735c6
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright 2015 Xamarin Inc. All rights reserved.
+#if SECURITY_DEP
+using System;
+using MSI = Mono.Security.Interface;
+
+namespace Mono.Net.Security
+{
+       static partial class MonoTlsProviderFactory
+       {
+               static MSI.MonoTlsProvider CreateDefaultProviderImpl ()
+               {
+                       MSI.MonoTlsProvider provider = null;
+                       if (MSI.MonoTlsProviderFactory._PrivateFactoryDelegate != null)
+                               provider = MSI.MonoTlsProviderFactory._PrivateFactoryDelegate ();
+                       return provider;
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Droid.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.Droid.cs
new file mode 100644 (file)
index 0000000..72390bc
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2015 Xamarin Inc. All rights reserved.
+#if SECURITY_DEP
+using System;
+using MSI = Mono.Security.Interface;
+#if HAVE_BTLS
+using Mono.Btls;
+#endif
+
+namespace Mono.Net.Security
+{
+       static partial class MonoTlsProviderFactory
+       {
+               static MSI.MonoTlsProvider CreateDefaultProviderImpl ()
+               {
+                       MSI.MonoTlsProvider provider = null;
+                       var type = Environment.GetEnvironmentVariable ("XA_TLS_PROVIDER");
+                       switch (type) {
+                       case null:
+                       case "default":
+                       case "legacy":
+                               return new Private.MonoLegacyTlsProvider ();
+                       case "btls":
+#if HAVE_BTLS
+                               if (!MonoBtlsProvider.IsSupported ())
+                                       throw new NotSupportedException ("BTLS in not supported!");
+                               return new MonoBtlsProvider ();
+#else
+                               throw new NotSupportedException ("BTLS in not supported!");
+#endif
+                       default:
+                               throw new NotSupportedException (string.Format ("Invalid TLS Provider: `{0}'.", provider));
+                       }
+               }
+       }
+}
+#endif
index c4b17abcd0ee93d2c9f98af837dc3064598fd773..bb525974ea82761b55ee0c270e133a39d0461f3f 100644 (file)
@@ -101,10 +101,10 @@ namespace Mono.Net.Security
                        }
                }
 
-#if MONO_FEATURE_NEW_SYSTEM_SOURCE || (!MONOTOUCH && !XAMMAC)
                static IMonoTlsProvider CreateDefaultProvider ()
                {
 #if SECURITY_DEP
+                       MSI.MonoTlsProvider provider = null;
 #if MONO_FEATURE_NEW_SYSTEM_SOURCE
                        /*
                         * This is a hack, which is used in the Mono.Security.Providers.NewSystemSource
@@ -115,16 +115,15 @@ namespace Mono.Net.Security
                         * NewSystemSource needs to compile MonoTlsProviderFactory.cs, IMonoTlsProvider.cs,
                         * MonoTlsProviderWrapper.cs and CallbackHelpers.cs from this directory and only these.
                         */
-                       var userProvider = MSI.MonoTlsProviderFactory.GetProvider ();
-                       return new Private.MonoTlsProviderWrapper (userProvider);
+                       provider = MSI.MonoTlsProviderFactory.GetProvider ();
 #else
-                       return CreateDefaultProviderImpl ();
+                       provider = CreateDefaultProviderImpl ();
 #endif
-#else
-                       return null;
+                       if (provider != null)
+                               return new Private.MonoTlsProviderWrapper (provider);
 #endif
+                       return null;
                }
-#endif
 
                static object locker = new object ();
                static IMonoTlsProvider defaultProvider;
@@ -160,7 +159,7 @@ namespace Mono.Net.Security
                                return null;
 
                        try {
-                               return (MSI.MonoTlsProvider)Activator.CreateInstance (type);
+                               return (MSI.MonoTlsProvider)Activator.CreateInstance (type, true);
                        } catch (Exception ex) {
                                throw new NotSupportedException (string.Format ("Unable to instantiate TLS Provider `{0}'.", type), ex);
                        }
@@ -172,15 +171,19 @@ namespace Mono.Net.Security
                                if (providerRegistration != null)
                                        return;
                                providerRegistration = new Dictionary<string,string> ();
+                               providerRegistration.Add ("legacy", "Mono.Net.Security.Private.MonoLegacyTlsProvider");
                                providerRegistration.Add ("newtls", "Mono.Security.Providers.NewTls.NewTlsProvider, Mono.Security.Providers.NewTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756");
                                providerRegistration.Add ("oldtls", "Mono.Security.Providers.OldTls.OldTlsProvider, Mono.Security.Providers.OldTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756");
-                               providerRegistration.Add ("boringtls", "Xamarin.BoringTls.BoringTlsProvider, Xamarin.BoringTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=672c06b0b8f05406");
+#if HAVE_BTLS
+                               if (Mono.Btls.MonoBtlsProvider.IsSupported ())
+                                       providerRegistration.Add ("btls", "Mono.Btls.MonoBtlsProvider");
+#endif
                                X509Helper2.Initialize ();
                        }
                }
 
 #if !MOBILE
-               static IMonoTlsProvider TryDynamicLoad ()
+               static MSI.MonoTlsProvider TryDynamicLoad ()
                {
                        var variable = Environment.GetEnvironmentVariable ("MONO_TLS_PROVIDER");
                        if (variable == null)
@@ -189,22 +192,18 @@ namespace Mono.Net.Security
                        if (string.Equals (variable, "default", StringComparison.OrdinalIgnoreCase))
                                return null;
 
-                       var provider = LookupProvider (variable, true);
-
-                       return new Private.MonoTlsProviderWrapper (provider);
+                       return LookupProvider (variable, true);
                }
-#endif
 
-               static IMonoTlsProvider CreateDefaultProviderImpl ()
+               static MSI.MonoTlsProvider CreateDefaultProviderImpl ()
                {
-#if !MOBILE
                        var provider = TryDynamicLoad ();
                        if (provider != null)
                                return provider;
-#endif
 
-                       return new Private.MonoDefaultTlsProvider ();
+                       return new Private.MonoLegacyTlsProvider ();
                }
+#endif
 
                #region Mono.Security visible API
 
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactoryExt.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactoryExt.cs
deleted file mode 100644 (file)
index f9f939b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 Xamarin Inc. All rights reserved.
-
-using System;
-using MSI = Mono.Security.Interface;
-
-namespace Mono.Net.Security
-{
-       static partial class MonoTlsProviderFactory
-       {
-               static IMonoTlsProvider CreateDefaultProvider ()
-               {
-                       #if SECURITY_DEP
-                       MSI.MonoTlsProvider provider = null;
-                       if (MSI.MonoTlsProviderFactory._PrivateFactoryDelegate != null)
-                               provider = MSI.MonoTlsProviderFactory._PrivateFactoryDelegate ();
-                       if (provider != null)
-                               return new Private.MonoTlsProviderWrapper (provider);
-                       #endif
-                       return null;
-               }
-       }
-}
index 58479df9fba6942c75eff0c548ec913f95f84cc0..79e4fbf68451cdcdd881891c2a7a223fcfe0f0ed 100644 (file)
@@ -97,7 +97,7 @@ namespace Mono.Net.Security
 
                        try {
                                sslStream.AuthenticateAsClient (
-                                       request.Address.Host, request.ClientCertificates,
+                                       request.Host, request.ClientCertificates,
                                        (SslProtocols)ServicePointManager.SecurityProtocol,
                                        ServicePointManager.CheckCertificateRevocationList);
 
index 7a29e8f83e3241b6d242f88239a5ca806f30fa87..bd1ea619bada6196b745bb9d359dc64004217efb 100644 (file)
@@ -39,6 +39,11 @@ namespace System.Diagnostics
                protected ProcessModuleCollectionBase InnerList {
                        get { return this; }
                }
+
+               public System.Collections.IEnumerator GetEnumerator ()
+               {
+                       return ((System.Collections.IEnumerable)InnerList).GetEnumerator ();
+               }
        }
 #endif
 
index ffa9b9899dd399ce9bed25c34e97f77166edbb13..b2fbdbfcb161a263a3cba0e256952ad084101b1d 100644 (file)
@@ -45,6 +45,11 @@ namespace System.Diagnostics
                        base.Add (thread);
                        return Count - 1;
                }
+
+               public System.Collections.IEnumerator GetEnumerator ()
+               {
+                       return ((System.Collections.IEnumerable)InnerList).GetEnumerator ();
+               }
        }
 #endif
 
index aa13ac520944e22b7153c11956a1a775008fac56..3b274e0599e3bb53e849adfb400d0b3904118e18 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace System.IO
 {
-    public class FileSystemWatcher
+    public class FileSystemWatcher : IDisposable
     {
         public FileSystemWatcher () { throw new NotImplementedException (); }
         public FileSystemWatcher (string path) { throw new NotImplementedException (); }
@@ -51,5 +51,13 @@ namespace System.IO
         protected void OnRenamed (RenamedEventArgs e) { throw new NotImplementedException (); }
         public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType) { throw new NotImplementedException (); }
         public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType, int timeout) { throw new NotImplementedException (); }
+
+        public virtual void Dispose ()
+        {
+        }
+
+        protected virtual void Dispose (bool disposing)
+        {
+        }
     }
 }
\ No newline at end of file
index 59e741722b67b820861fb63af0005b004087397c..3e7320e3cd160e259773efe54cece0fe38250afa 100644 (file)
@@ -125,6 +125,12 @@ namespace System.Net.Security
                        impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen, settings);
                }
 
+               [MonoLimitation ("encryptionPolicy is ignored")]
+               public SslStream (Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback, LocalCertificateSelectionCallback userCertificateSelectionCallback, EncryptionPolicy encryptionPolicy)
+               : this (innerStream, leaveInnerStreamOpen, userCertificateValidationCallback, userCertificateSelectionCallback)
+               {
+               }
+
                internal SslStream (Stream innerStream, bool leaveInnerStreamOpen, IMonoSslStream impl)
                        : base (innerStream, leaveInnerStreamOpen)
                {
index 07896d201380eea623b23d5a0ecfd9365798af18..f894f490612fc2b6ff9f185bd113be8941234c9b 100644 (file)
@@ -1356,6 +1356,21 @@ namespace System.Net.Sockets
                        return true;
                }
 
+               public static bool ConnectAsync (SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e)
+               {
+                       var sock = new Socket (e.RemoteEndPoint.AddressFamily, socketType, protocolType);
+                       return sock.ConnectAsync (e);
+               }
+
+               public static void CancelConnectAsync (SocketAsyncEventArgs e)
+               {
+                       if (e == null)
+                               throw new ArgumentNullException("e");
+
+                       if (e.in_progress != 0 && e.LastOperation == SocketAsyncOperation.Connect)
+                               e.current_socket.Close();
+               }
+
                static AsyncCallback ConnectAsyncCallback = new AsyncCallback (ares => {
                        SocketAsyncEventArgs e = (SocketAsyncEventArgs) ((SocketAsyncResult) ares).AsyncState;
 
index 2dd8387c04916d457eb34178fc4ed84154cfd490..98622cb981a30a8f29324b26b932fdb9c1cd3c40 100644 (file)
@@ -101,7 +101,6 @@ namespace System.Net.Sockets
                        set { remote_ep = value; }
                }
 
-#if !NET_2_1
                public IPPacketInformation ReceiveMessageFromPacketInfo {
                        get;
                        private set;
@@ -112,6 +111,7 @@ namespace System.Net.Sockets
                        set;
                }
 
+#if !NET_2_1
                public TransmitFileOptions SendPacketsFlags {
                        get;
                        set;
@@ -185,9 +185,7 @@ namespace System.Net.Sockets
                        BufferList = null;
                        RemoteEndPoint = null;
                        UserToken = null;
-#if !NET_2_1
                        SendPacketsElements = null;
-#endif
                }
 
                public void Dispose ()
index 46d16b4e4757f2e812655d71501307db830b8c31..bbdb034aa1578de38196fdeb45f68f9e0e4a4958 100644 (file)
@@ -267,7 +267,7 @@ namespace System.Net.Sockets
                
                public void Close ()
                {
-                       ((IDisposable) this).Dispose ();
+                       Dispose ();
                }
 
                public void Connect (IPEndPoint remoteEP)
@@ -382,7 +382,7 @@ namespace System.Net.Sockets
                        return client.BeginConnect (host, port, requestCallback, state);
                }
                
-               void IDisposable.Dispose ()
+               public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
index 0799816a9ea82ce2c0d22b625cf267d8eeaa1179..ad3c4117f58a06d44f4be17f73adb7f2a8668cc3 100644 (file)
@@ -125,12 +125,10 @@ namespace System.Net.Sockets
                                socket.Bind (localEP);
                }
 
-#region Close
                public void Close ()
                {
-                       ((IDisposable) this).Dispose ();        
+                       Dispose ();
                }
-#endregion
 #region Connect
 
                void DoConnect (IPEndPoint endPoint)
@@ -570,7 +568,7 @@ namespace System.Net.Sockets
 
 #endregion
 #region Disposing
-               void IDisposable.Dispose ()
+               public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
index 9010edfeac200b73ad2baffeb31a2da3a77047e4..3fa9b3f4a9d3cad512956330d71b15d065daa768 100644 (file)
@@ -50,6 +50,11 @@ namespace System.Security.Authentication.ExtendedProtection
                {
                        throw new NotImplementedException ();
                }
+
+               public bool Contains (string searchServiceName)
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
 
index 60e256a05c0295cc54df40f8c7040ea3601ec887..234d0907f2dbcaedf74a722b331e2083aaebf8af 100644 (file)
@@ -67,6 +67,10 @@ namespace System.Security.Cryptography.X509Certificates
                        get;
                }
 
+               internal abstract X509CertificateImplCollection IntermediateCertificates {
+                       get;
+               }
+
                public abstract string GetNameInfo (X509NameType nameType, bool forIssuer);
 
                public abstract void Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags);
index bfb2696f97c99d3098801cd260bf07a6603c721b..cdc14c49eb13e2d2479c961ce8e9a4a4243ce484 100644 (file)
@@ -57,6 +57,7 @@ namespace System.Security.Cryptography.X509Certificates
                X500DistinguishedName issuer_name;
                X500DistinguishedName subject_name;
                Oid signature_algorithm;
+               X509CertificateImplCollection intermediateCerts;
 
                MX.X509Certificate _cert;
 
@@ -77,18 +78,25 @@ namespace System.Security.Cryptography.X509Certificates
                        return IntPtr.Zero;
                }
 
-               internal X509Certificate2ImplMono (MX.X509Certificate cert)
+               X509Certificate2ImplMono (MX.X509Certificate cert)
                {
                        this._cert = cert;
                }
 
+               X509Certificate2ImplMono (X509Certificate2ImplMono other)
+               {
+                       _cert = other._cert;
+                       if (other.intermediateCerts != null)
+                               intermediateCerts = other.intermediateCerts.Clone ();
+               }
+
                public override X509CertificateImpl Clone ()
                {
                        ThrowIfContextInvalid ();
-                       return new X509Certificate2ImplMono (_cert);
+                       return new X509Certificate2ImplMono (this);
                }
 
-               #region Implemented X509CertificateImpl members
+#region Implemented X509CertificateImpl members
 
                public override string GetIssuerName (bool legacyV1Mode)
                {
@@ -183,7 +191,7 @@ namespace System.Security.Cryptography.X509Certificates
                        }
                }
 
-               #endregion
+#endregion
 
                // constructors
 
@@ -459,6 +467,15 @@ namespace System.Security.Cryptography.X509Certificates
                                        cert.RSA = (keypair as RSA);
                                        cert.DSA = (keypair as DSA);
                                }
+                               if (pfx.Certificates.Count > 1) {
+                                       intermediateCerts = new X509CertificateImplCollection ();
+                                       foreach (var c in pfx.Certificates) {
+                                               if (c == cert)
+                                                       continue;
+                                               var impl = new X509Certificate2ImplMono (c);
+                                               intermediateCerts.Add (impl, true);
+                                       }
+                               }
                                return cert;
                        }
                }
@@ -546,6 +563,10 @@ namespace System.Security.Cryptography.X509Certificates
                        issuer_name = null;
                        subject_name = null;
                        signature_algorithm = null;
+                       if (intermediateCerts != null) {
+                               intermediateCerts.Dispose ();
+                               intermediateCerts = null;
+                       }
                }
 
                public override string ToString ()
@@ -687,6 +708,10 @@ namespace System.Security.Cryptography.X509Certificates
                        return GetCertContentType (data);
                }
 
+               internal override X509CertificateImplCollection IntermediateCertificates {
+                       get { return intermediateCerts; }
+               }
+
                // internal stuff because X509Certificate2 isn't complete enough
                // (maybe X509Certificate3 will be better?)
 
diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509CertificateImplCollection.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509CertificateImplCollection.cs
new file mode 100644 (file)
index 0000000..42099ca
--- /dev/null
@@ -0,0 +1,97 @@
+//
+// X509CertificateImplCollection.cs
+//
+// Authors:
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if SECURITY_DEP
+using System.Collections.Generic;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       internal class X509CertificateImplCollection : IDisposable
+       {
+               List<X509CertificateImpl> list;
+
+               public X509CertificateImplCollection ()
+               {
+                       list = new List<X509CertificateImpl> ();
+               }
+
+               X509CertificateImplCollection (X509CertificateImplCollection other)
+               {
+                       list = new List<X509CertificateImpl> ();
+                       foreach (var impl in other.list)
+                               list.Add (impl.Clone ());
+               }
+
+               public int Count {
+                       get {
+                               return list.Count;
+                       }
+               }
+
+               public X509CertificateImpl this[int index] {
+                       get {
+                               return list[index];
+                       }
+               }
+
+               public void Add (X509CertificateImpl impl, bool takeOwnership)
+               {
+                       if (!takeOwnership)
+                               impl = impl.Clone ();
+                       list.Add (impl);
+               }
+
+               public X509CertificateImplCollection Clone ()
+               {
+                       return new X509CertificateImplCollection (this);
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       foreach (var impl in list) {
+                               try {
+                                       impl.Dispose ();
+                               } catch {
+                                       ;
+                               }
+                       }
+                       list.Clear ();
+               }
+
+               ~X509CertificateImplCollection ()
+               {
+                       Dispose (false);
+               }
+       }
+}
+#endif
index a7c24d385f8fe38d227f6609085127b4bf604c6a..0ea1c8e9b06ab45d4c27b716de5b7fcdea4c1e4b 100644 (file)
@@ -37,6 +37,7 @@ using MX = MonoSecurity::Mono.Security.X509;
 using MX = Mono.Security.X509;
 #endif
 
+using Microsoft.Win32.SafeHandles;
 using System.Collections;
 using System.Text;
 
@@ -113,6 +114,10 @@ namespace System.Security.Cryptography.X509Certificates {
                        get { return Impl.ChainStatus; }
                }
 
+               public SafeX509ChainHandle SafeHandle {
+                       get { throw new NotImplementedException (); }
+               }
+
                // methods
 
                [MonoTODO ("Not totally RFC3280 compliant, but neither is MS implementation...")]
index 142592bc58156a296e531d05d201fcff669c6732..e606819185fbdfae79cd2e8cac6fdaf001920899 100644 (file)
@@ -53,7 +53,10 @@ namespace System.Security.Cryptography.X509Certificates {
                CtlNotSignatureValid = 262144,
                CtlNotValidForUsage = 524288,
                OfflineRevocation = 16777216,
-               NoIssuanceChainPolicy = 33554432
+               NoIssuanceChainPolicy = 33554432,
+               ExplicitDistrust = 67108864,
+               HasNotSupportedCriticalExtension = 134217728,
+               HasWeakSignature = 1048576,
        }
 }
 
index 42b6c6e3d44dc65bdbf2d8838f498fdd51ed0c33..0b9ec4525b4fc574346d8efa11106117eba86500 100644 (file)
@@ -40,7 +40,7 @@ using System.Security.Permissions;
 
 namespace System.Security.Cryptography.X509Certificates {
 
-       public sealed class X509Store {
+       public sealed class X509Store : IDisposable {
 
                private string _name;
                private StoreLocation _location;
@@ -208,6 +208,11 @@ namespace System.Security.Cryptography.X509Certificates {
                                list.Clear ();
                }
 
+               public void Dispose ()
+               {
+                       Close ();
+               }
+
                public void Open (OpenFlags flags)
                {
                        if (String.IsNullOrEmpty (_name))
index 542fa6411e00257d52b64b0955275be86b3aa4b3..abb1faf58183a6b9e62820befc3bc07cf497b3aa 100644 (file)
@@ -459,6 +459,7 @@ System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
 System.Security.Cryptography.X509Certificates/X509Certificate2Impl.cs
 System.Security.Cryptography.X509Certificates/X509Certificate2ImplMono.cs
 System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImplCollection.cs
 System.Security.Cryptography.X509Certificates/X509Chain.cs
 System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
 System.Security.Cryptography.X509Certificates/X509ChainElement.cs
@@ -538,12 +539,15 @@ System.Windows.Input/ICommand.cs
 
 System/IOSelector.cs
 
+Mono.Net.Security/AsyncProtocolRequest.cs
 Mono.Net.Security/CallbackHelpers.cs
 Mono.Net.Security/ChainValidationHelper.cs
 Mono.Net.Security/IMonoTlsProvider.cs
 Mono.Net.Security/IMonoSslStream.cs
 Mono.Net.Security/LegacySslStream.cs
-Mono.Net.Security/MonoDefaultTlsProvider.cs
+Mono.Net.Security/MobileAuthenticatedStream.cs
+Mono.Net.Security/MobileTlsContext.cs
+Mono.Net.Security/MonoLegacyTlsProvider.cs
 Mono.Net.Security/MonoSslStreamImpl.cs
 Mono.Net.Security/MonoSslStreamWrapper.cs
 Mono.Net.Security/MonoTlsProviderFactory.cs
index d0a70bbb58b45e7dbf72d0706ee46539597034e1..1b4c33d5db27c04d48f883f9bcd5f22366b42b37 100644 (file)
@@ -246,6 +246,7 @@ System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
 System.Security.Cryptography.X509Certificates/X509Certificate2Impl.cs
 System.Security.Cryptography.X509Certificates/X509Certificate2ImplMono.cs
 System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImplCollection.cs
 System.Security.Cryptography.X509Certificates/X509Chain.cs
 System.Security.Cryptography.X509Certificates/X509ChainElement.cs
 System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
@@ -284,12 +285,15 @@ System/UriTypeConverter.cs
 System.Windows.Input/ICommand.cs
 Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs
 
+Mono.Net.Security/AsyncProtocolRequest.cs
 Mono.Net.Security/CallbackHelpers.cs
 Mono.Net.Security/ChainValidationHelper.cs
 Mono.Net.Security/IMonoTlsProvider.cs
 Mono.Net.Security/IMonoSslStream.cs
 Mono.Net.Security/LegacySslStream.cs
-Mono.Net.Security/MonoDefaultTlsProvider.cs
+Mono.Net.Security/MobileAuthenticatedStream.cs
+Mono.Net.Security/MobileTlsContext.cs
+Mono.Net.Security/MonoLegacyTlsProvider.cs
 Mono.Net.Security/MonoSslStreamImpl.cs
 Mono.Net.Security/MonoSslStreamWrapper.cs
 Mono.Net.Security/MonoTlsProviderFactory.cs
index 2abef931590df68cffac80eecdf384749c693092..686004bd3b16c16676290b8c5bec21daaa5b0827 100644 (file)
@@ -1,3 +1,3 @@
 #include mobile_System.dll.sources
 System/AndroidPlatform.cs
-
+Mono.Net.Security/MonoTlsProviderFactory.Droid.cs
index 8f3de2eff5d4afd0a8048ca3c1460423b79e1ec6..a9108dde96aa1e3d5d224acc2a4d2e0c306b79aa 100644 (file)
@@ -1,5 +1,5 @@
 #include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
 Assembly/AssemblyInfoEx.cs
-Mono.Net.Security/MonoTlsProviderFactoryExt.cs
-Mono.Security.Interface/MonoTlsProviderFactoryExt.cs
+Mono.Net.Security/MonoTlsProviderFactory.Apple.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.Apple.cs
index 330f5106870020aee431722048cc1f9f8e8a4ba5..7c857b015bf39845453e8b87127db98bf9b8a368 100644 (file)
@@ -1,4 +1,4 @@
 #include mobile_System.dll.sources
 Assembly/AssemblyInfoEx.cs
-Mono.Net.Security/MonoTlsProviderFactoryExt.cs
-Mono.Security.Interface/MonoTlsProviderFactoryExt.cs
+Mono.Net.Security/MonoTlsProviderFactory.Apple.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.Apple.cs
index a0f30146c82b61f35df9fa048c0f5f31cfadf689..531958e8bc5c801f0b8ddb2ec63f9ed24558dda5 100644 (file)
@@ -60,12 +60,90 @@ namespace Microsoft.Win32
                        throw new PlatformNotSupportedException ();
                }
 
+               public RegistryKey CreateSubKey (String subkey, bool writable)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey CreateSubKey (String subkey, bool writable, RegistryOptions options)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public void DeleteSubKey (string subkey)
+               {
+               }
+
+               public void DeleteSubKey (string subkey, bool throwOnMissingSubKey)
+               {
+               }
+
+               public void DeleteSubKeyTree (string subkey)
+               {
+               }
+
+               public void DeleteSubKeyTree (string subkey, bool throwOnMissingSubKey)
+               {
+               }
+
+               public void DeleteValue (string name)
+               {
+               }
+
+               public void DeleteValue (string name, bool throwOnMissingValue)
+               {
+               }
+
+               public void Flush()
+               {
+               }
+
+               public static RegistryKey FromHandle (SafeRegistryHandle handle)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public static RegistryKey FromHandle (SafeRegistryHandle handle, RegistryView view)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public string[] GetSubKeyNames ()
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public object GetValue (string name)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
                public object GetValue (string name, object defaultValue)
                {
                        throw new PlatformNotSupportedException ();
                }
 
-               public static object GetValue (string keyName, string valueName, object defaultValue)
+               public object GetValue (string name, object defaultValue, RegistryValueOptions options)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryValueKind GetValueKind (string name)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public string[] GetValueNames ()
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public static RegistryKey OpenBaseKey (RegistryHive hKey, RegistryView view)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey OpenSubKey (string name)
                {
                        throw new PlatformNotSupportedException ();
                }
@@ -75,6 +153,11 @@ namespace Microsoft.Win32
                        throw new PlatformNotSupportedException ();
                }
 
+               public RegistryKey OpenSubKey (string name, RegistryRights rights)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
                public void SetValue (string name, object value)
                {
                }
@@ -83,7 +166,25 @@ namespace Microsoft.Win32
                {
                }
 
-               // TODO: Finish full contract API
+               public SafeRegistryHandle Handle {
+                       get { throw new PlatformNotSupportedException (); }
+               }
+
+               public string Name {
+                       get { throw new PlatformNotSupportedException (); }
+               }
+
+               public int SubKeyCount {
+                       get { throw new PlatformNotSupportedException (); }
+               }
+
+               public int ValueCount {
+                       get { throw new PlatformNotSupportedException (); }
+               }
+
+               public RegistryView View {
+                       get { throw new PlatformNotSupportedException (); }
+               }
        }
 #else
        /// <summary>
@@ -389,7 +490,18 @@ namespace Microsoft.Win32
                        return CreateSubKey (subkey, permissionCheck, registryOptions);
                }
 
-               
+               [ComVisible(false)]
+               public RegistryKey CreateSubKey (string subkey, bool writable)
+               {
+                       return CreateSubKey (subkey, writable ? RegistryKeyPermissionCheck.ReadWriteSubTree : RegistryKeyPermissionCheck.ReadSubTree);
+               }
+
+               [ComVisible(false)]
+               public RegistryKey CreateSubKey (string subkey, bool writable, RegistryOptions options)
+               {
+                       return CreateSubKey (subkey, writable ? RegistryKeyPermissionCheck.ReadWriteSubTree : RegistryKeyPermissionCheck.ReadSubTree, options);
+               }
+
                /// <summary>
                ///     Delete the specified subkey.
                /// </summary>
@@ -589,7 +701,14 @@ namespace Microsoft.Win32
                {
                        return OpenSubKey (name, permissionCheck == RegistryKeyPermissionCheck.ReadWriteSubTree);
                }
-               
+
+               [ComVisible (false)]
+               [MonoLimitation ("rights are ignored in Mono")]
+               public RegistryKey OpenSubKey (string name, RegistryRights rights)
+               {
+                       return OpenSubKey (name);
+               }
+
                [ComVisible (false)]
                [MonoLimitation ("rights are ignored in Mono")]
                public RegistryKey OpenSubKey (string name, RegistryKeyPermissionCheck permissionCheck, RegistryRights rights)
index a0d0fd05b21b577d2d670f577359fe76c763bf45..a639132ba2db742acbb2545174878a3911ca9d6c 100644 (file)
@@ -41,12 +41,15 @@ namespace System.Diagnostics.Tracing
                        get; private set;
                }
 
+               public EventActivityOptions ActivityOptions { get; set; }
                public EventLevel Level { get; set; }
                public EventKeywords Keywords { get; set; }
                public EventOpcode Opcode { get; set; }
                public EventChannel Channel { get; set; }
                public string Message { get; set; }
                public EventTask Task { get; set; }
+               public EventTags Tags { get; set; }
+               public byte Version { get; set; }
        }
 }
 
index 0872f01977ad44dbd72aad695444439c989a2e57..312f0ccb166d6de88051a04b5670d7e828f0bb51 100644 (file)
@@ -28,6 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Collections.Generic;
 
 namespace System.Diagnostics.Tracing
 {
@@ -76,6 +77,11 @@ namespace System.Diagnostics.Tracing
                {
                }
 
+               ~EventSource ()
+               {
+                       Dispose (false);
+               }
+
                public Exception ConstructionException
                {
                        get { return null; }
@@ -121,6 +127,7 @@ namespace System.Diagnostics.Tracing
                public void Dispose ()
                {
                        Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                public string GetTrait (string key)
@@ -132,6 +139,10 @@ namespace System.Diagnostics.Tracing
                {
                }
 
+               public void Write (string eventName, EventSourceOptions options)
+               {
+               }
+
                public void Write<T> (string eventName, T data)
                {
                }
@@ -244,6 +255,75 @@ namespace System.Diagnostics.Tracing
                {
                        WriteEvent (eventId, new object[] { arg1, arg2, arg3 } );
                }
+
+               protected unsafe void WriteEventCore (int eventId, int eventDataCount, EventData* data)
+               {
+               }
+
+               protected unsafe void WriteEventWithRelatedActivityId (int eventId, Guid relatedActivityId, params object[] args)
+               {
+               }
+
+               protected unsafe void WriteEventWithRelatedActivityIdCore (int eventId, Guid* relatedActivityId, int eventDataCount, EventSource.EventData* data)
+               {
+               }
+
+#if NETSTANDARD
+               [MonoTODO]
+               public event EventHandler<EventCommandEventArgs> EventCommandExecuted
+               {
+                       add { throw new NotImplementedException (); }
+                       remove { throw new NotImplementedException (); }
+               }
+#endif
+
+               [MonoTODO]
+               public static string GenerateManifest (Type eventSourceType, string assemblyPathToIncludeInManifest)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static string GenerateManifest (Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static Guid GetGuid (Type eventSourceType)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static string GetName (Type eventSourceType)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static IEnumerable<EventSource> GetSources ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static void SendCommand (EventSource eventSource, EventCommand command, IDictionary<string, string> commandArguments)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static void SetCurrentThreadActivityId (Guid activityId)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static void SetCurrentThreadActivityId (Guid activityId, out Guid oldActivityThatWillContinue)
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
 
index f983beeb634111f050844731b252ead7ccf04db1..d1958f33eb26c47bb90f110544c0a88326d30685 100644 (file)
@@ -68,6 +68,12 @@ namespace System.Runtime.InteropServices
 #endif
                }
 
+               [MonoTODO]
+               public static bool AreComObjectsAvailableForCleanup ()
+               {
+                       return false;
+               }
+
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static IntPtr AllocCoTaskMem (int cb);
 
@@ -341,6 +347,12 @@ namespace System.Runtime.InteropServices
 #endif
                }
 
+               [MonoTODO]
+               public static IntPtr GetComInterfaceForObject (object o, Type T, CustomQueryInterfaceMode mode)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public static IntPtr GetComInterfaceForObject<T, TInterface> (T o) {
                        return GetComInterfaceForObject ((object)o, typeof (T));
                }
index a7975c16d21c9754475352b03d09892e7694b880..7c0453db56d183744c1c9ac333c722bda985a881 100644 (file)
@@ -33,11 +33,20 @@ namespace System.Security.AccessControl
 {
        public sealed class AuthorizationRuleCollection : ReadOnlyCollectionBase
        {
+               public AuthorizationRuleCollection ()
+               {
+               }
+
                internal AuthorizationRuleCollection (AuthorizationRule [] rules)
                {
                        InnerList.AddRange (rules);
                }
 
+               public void AddRule (AuthorizationRule rule)
+               {
+                       InnerList.Add (rule);
+               }
+
                public AuthorizationRule this [int index] {
                        get { return (AuthorizationRule) InnerList [index]; }
                }
index 60bb7b2cde537f05ab54190cf77ccbd5e37aef6c..b74475ed740866ec060f152cd6cd48a0c5a2cf63 100644 (file)
@@ -216,7 +216,19 @@ namespace System.Security.AccessControl
                        if (!preserveInheritance && SystemAcl != null)
                                SystemAcl.RemoveInheritedAces ();
                }
-               
+
+               public void AddDiscretionaryAcl (byte revision, int trusted)
+               {
+                       DiscretionaryAcl = new DiscretionaryAcl (IsContainer, IsDS, revision, trusted);
+                       flags |= ControlFlags.DiscretionaryAclPresent;
+               }
+
+               public void AddSystemAcl(byte revision, int trusted)
+               {
+                       SystemAcl = new SystemAcl (IsContainer, IsDS, revision, trusted);
+                       flags |= ControlFlags.SystemAclPresent;
+               }
+
                void CheckAclConsistency (CommonAcl acl)
                {
                        if (IsContainer != acl.IsContainer)
index 1d3156fc57a068494d9367ed385c534b2bf395b5..6d3983bcd4dc4ac30a4fedea7d6429e3636e708e 100644 (file)
@@ -71,7 +71,12 @@ namespace System.Security.AccessControl
                                inheritanceFlags, propagationFlags, AuditFlags.None,
                                objectFlags, objectType, inheritedObjectType);
                }
-               
+
+               public void AddAccess (AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
+               {
+                       AddAccess (accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                [MonoTODO]
                public bool RemoveAccess (AccessControlType accessType,
                                          SecurityIdentifier sid,
@@ -94,7 +99,12 @@ namespace System.Security.AccessControl
                {
                        throw new NotImplementedException ();
                }
-               
+
+               public bool RemoveAccess (AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
+               {
+                       return RemoveAccess (accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                public void RemoveAccessSpecific (AccessControlType accessType,
                                                  SecurityIdentifier sid,
                                                  int accessMask,
@@ -118,7 +128,12 @@ namespace System.Security.AccessControl
                                           inheritanceFlags, propagationFlags, AuditFlags.None,
                                           objectFlags, objectType, inheritedObjectType);
                }
-               
+
+               public void RemoveAccessSpecific (AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
+               {
+                       RemoveAccessSpecific (accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                public void SetAccess (AccessControlType accessType,
                                       SecurityIdentifier sid,
                                       int accessMask,
@@ -142,7 +157,12 @@ namespace System.Security.AccessControl
                                inheritanceFlags, propagationFlags, AuditFlags.None,
                                objectFlags, objectType, inheritedObjectType);
                }
-               
+
+               public void SetAccess (AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
+               {
+                       SetAccess (accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                internal override void ApplyCanonicalSortToExplicitAces ()
                {
                        int explicitCount = GetCanonicalExplicitAceCount ();
index 038fc71b8eeba46156fbe28da5a6e59e1d55c19c..b3143fc25486b9b7f915034cf070b03d656051bd 100644 (file)
@@ -39,7 +39,11 @@ namespace System.Security.AccessControl
 {
        public abstract class ObjectSecurity
        {
-               internal ObjectSecurity (CommonSecurityDescriptor securityDescriptor)
+               protected ObjectSecurity ()
+               {
+               }
+
+               protected ObjectSecurity (CommonSecurityDescriptor securityDescriptor)
                {
                        if (securityDescriptor == null)
                                throw new ArgumentNullException ("securityDescriptor");
index 3d41d02c6ca809210c042082a04072e1ef99b4ce..238fe8c904189e0f50d67ae0eaacb2116c01e0d0 100644 (file)
@@ -71,7 +71,12 @@ namespace System.Security.AccessControl
                                inheritanceFlags, propagationFlags, auditFlags,
                                objectFlags, objectType, inheritedObjectType);
                }
-               
+
+               public void AddAudit (SecurityIdentifier sid, ObjectAuditRule rule)
+               {
+                       AddAudit (rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                [MonoTODO]
                public bool RemoveAudit (AuditFlags auditFlags,
                                         SecurityIdentifier sid,
@@ -94,7 +99,12 @@ namespace System.Security.AccessControl
                {
                        throw new NotImplementedException ();
                }
-               
+
+               public bool RemoveAudit (SecurityIdentifier sid, ObjectAuditRule rule)
+               {
+                       return RemoveAudit (rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                public void RemoveAuditSpecific (AuditFlags auditFlags,
                                                 SecurityIdentifier sid,
                                                 int accessMask,
@@ -120,7 +130,12 @@ namespace System.Security.AccessControl
                                           objectFlags, objectType, inheritedObjectType);
 
                }
-               
+
+               public void RemoveAuditSpecific (SecurityIdentifier sid, ObjectAuditRule rule)
+               {
+                       RemoveAuditSpecific (rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                public void SetAudit (AuditFlags auditFlags,
                                      SecurityIdentifier sid,
                                      int accessMask,
@@ -144,7 +159,12 @@ namespace System.Security.AccessControl
                                inheritanceFlags, propagationFlags, auditFlags,
                                objectFlags, objectType, inheritedObjectType);
                }
-               
+
+               public void SetAudit (SecurityIdentifier sid, ObjectAuditRule rule)
+               {
+                       SetAudit (rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
+               }
+
                internal override void ApplyCanonicalSortToExplicitAces ()
                {
                        int explicitCount = GetCanonicalExplicitAceCount ();
index c86156e8ca137328a94758ec06621f1af0a4c29b..a36af1be59ec9ee899b61c8e938998a63906a2c8 100644 (file)
@@ -183,6 +183,18 @@ namespace System.Security.Principal {
                        return new WindowsImpersonationContext (userToken);
                }
 
+               [SecuritySafeCritical]
+               public static void RunImpersonated (SafeAccessTokenHandle safeAccessTokenHandle, Action action)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [SecuritySafeCritical]
+               public static T RunImpersonated<T> (SafeAccessTokenHandle safeAccessTokenHandle, Func<T> func)
+               {
+                       throw new NotImplementedException ();
+               }
+
                // properties
                sealed override
                public string AuthenticationType {
index f75547ab13d55a425298a88f431b885aa0462a08..2e7c4f4531cb5242216108d55f3cecb01860ffef 100644 (file)
@@ -782,6 +782,183 @@ namespace System
                        if (exit)
                                Environment.Exit (58);
                }
+#else
+               // largely inspired by https://github.com/dotnet/corefx/blob/be8d2ce3964968cec9322a64211e37682085db70/src/System.Console/src/System/ConsolePal.WinRT.cs, because it's a similar platform where a console might not be available
+
+               // provide simply color tracking that allows round-tripping
+               internal const ConsoleColor UnknownColor = (ConsoleColor)(-1);
+               private static ConsoleColor s_trackedForegroundColor = UnknownColor;
+               private static ConsoleColor s_trackedBackgroundColor = UnknownColor;
+
+               public static ConsoleColor ForegroundColor
+               {
+                       get
+                       {
+                               return s_trackedForegroundColor;
+                       }
+                       set
+                       {
+                               lock (Console.Out) // synchronize with other writers
+                               {
+                                       s_trackedForegroundColor = value;
+                               }
+                       }
+               }
+
+               public static ConsoleColor BackgroundColor
+               {
+                       get
+                       {
+                               return s_trackedBackgroundColor;
+                       }
+                       set
+                       {
+                               lock (Console.Out) // synchronize with other writers
+                               {
+                                       s_trackedBackgroundColor = value;
+                               }
+                       }
+               }
+
+               public static int BufferWidth
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int BufferHeight
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static bool CapsLock { get { throw new PlatformNotSupportedException (); } }
+
+               public static int CursorLeft
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int CursorTop
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int CursorSize
+               {
+                       get { return 100; }
+                       set { throw new PlatformNotSupportedException(); }
+               }
+
+               public static bool CursorVisible
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static bool KeyAvailable { get { throw new PlatformNotSupportedException (); } }
+
+               public static int LargestWindowWidth
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int LargestWindowHeight
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static bool NumberLock { get { throw new PlatformNotSupportedException (); } }
+
+               public static string Title
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static bool TreatControlCAsInput
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int WindowHeight
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int WindowLeft
+               {
+                       get { return 0; }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int WindowTop
+               {
+                       get { return 0; }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static int WindowWidth
+               {
+                       get { throw new PlatformNotSupportedException (); }
+                       set { throw new PlatformNotSupportedException (); }
+               }
+
+               public static bool IsErrorRedirected { get { throw new PlatformNotSupportedException (); } }
+
+               public static bool IsInputRedirected { get { throw new PlatformNotSupportedException (); } }
+
+               public static bool IsOutputRedirected { get { throw new PlatformNotSupportedException (); } }
+
+               public static void Beep () { throw new PlatformNotSupportedException (); }
+
+               public static void Beep (int frequency, int duration) { throw new PlatformNotSupportedException (); }
+
+               public static void Clear () { throw new PlatformNotSupportedException (); }
+
+               public static void MoveBufferArea (int sourceLeft, int sourceTop, int sourceWidth, int sourceHeight, int targetLeft, int targetTop) { throw new PlatformNotSupportedException(); }
+
+               public static void MoveBufferArea (int sourceLeft, int sourceTop, int sourceWidth, int sourceHeight, int targetLeft, int targetTop, char sourceChar, ConsoleColor sourceForeColor, ConsoleColor sourceBackColor) { throw new PlatformNotSupportedException(); }
+
+
+               public static ConsoleKeyInfo ReadKey ()
+               {
+                       return ReadKey (false);
+               }
+
+               public static ConsoleKeyInfo ReadKey (bool intercept) { throw new PlatformNotSupportedException (); }
+
+               public static void ResetColor ()
+               {
+                       lock (Console.Out) // synchronize with other writers
+                       {
+                               s_trackedForegroundColor = UnknownColor;
+                               s_trackedBackgroundColor = UnknownColor;
+                       }
+               }
+
+               public static void SetBufferSize (int width, int height) { throw new PlatformNotSupportedException (); }
+
+               public static void SetCursorPosition (int left, int top) { throw new PlatformNotSupportedException (); }
+
+               public static void SetWindowPosition (int left, int top) { throw new PlatformNotSupportedException (); }
+
+               public static void SetWindowSize (int width, int height) { throw new PlatformNotSupportedException (); }
+
+               public static event ConsoleCancelEventHandler CancelKeyPress {
+                       add {
+                               throw new PlatformNotSupportedException ();
+                       }
+                       remove {
+                               throw new PlatformNotSupportedException ();
+                       }
+               }
 #endif
        }
 }
index 4d1c23567337821fab76fb80fdc5d1feecf47af0..050330c0b4d2d1798ce4d8d7cdfa68eb72b86188 100644 (file)
@@ -137,6 +137,13 @@ namespace System.Linq.Expressions {
             return LambdaCompiler.Compile(this, debugInfoGenerator);
         }
 
+#if NETSTANDARD
+        public Delegate Compile(bool preferInterpretation) {
+            // TODO: add logic for preferInterpretation
+            return Compile();
+        }
+#endif
+
 #if FEATURE_REFEMIT
         /// <summary>
         /// Compiles the lambda into a method definition.
@@ -198,6 +205,13 @@ namespace System.Linq.Expressions {
             return (TDelegate)(object)LambdaCompiler.Compile(this, debugInfoGenerator);
         }
 
+#if NETSTANDARD
+        public new TDelegate Compile(bool preferInterpretation) {
+            // TODO: add logic for preferInterpretation
+            return Compile();
+        }
+#endif
+
         /// <summary>
         /// Creates a new expression that is like this one, but using the
         /// supplied children. If all of the children are the same, it will
index cd275de3c6ea9ecfbf83514a50fd7bc1a92f51dd..3e70f3f8c7decb7165936e0dfecd27c366703d76 100644 (file)
@@ -139,6 +139,13 @@ namespace System.Linq.Expressions {
             return LambdaCompiler.Compile(this, debugInfoGenerator);
         }
 
+#if NETSTANDARD
+        public Delegate Compile(bool preferInterpretation) {
+            // TODO: add logic for preferInterpretation
+            return Compile();
+        }
+#endif
+
         /// <summary>
         /// Compiles the lambda into a method definition.
         /// </summary>
@@ -200,6 +207,13 @@ namespace System.Linq.Expressions {
             return (TDelegate)(object)LambdaCompiler.Compile(this, debugInfoGenerator);
         }
 
+#if NETSTANDARD
+        public new TDelegate Compile(bool preferInterpretation) {
+            // TODO: add logic for preferInterpretation
+            return Compile();
+        }
+#endif
+
         /// <summary>
         /// Creates a new expression that is like this one, but using the
         /// supplied children. If all of the children are the same, it will
index f062ca5e6394c3e981aa5bf8417cf029954e40a0..373609195c25680febccfacc678a393fa3cfeb06 100644 (file)
@@ -694,6 +694,32 @@ namespace System.Linq
             foreach (TSource element in second) yield return element;
         }
 
+#if NETSTANDARD
+        public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
+        {
+            if (source == null) throw Error.ArgumentNull("source");
+            return AppendIterator<TSource>(source, element);
+        }
+
+        private static IEnumerable<TSource> AppendIterator<TSource>(IEnumerable<TSource> source, TSource element)
+        {
+            foreach (TSource e1 in source) yield return e1;
+            yield return element;
+        }
+
+        public static IEnumerable<TSource> Prepend<TSource>(this IEnumerable<TSource> source, TSource element)
+        {
+            if (source == null) throw Error.ArgumentNull("source");
+            return PrependIterator<TSource>(source, element);
+        }
+
+        private static IEnumerable<TSource> PrependIterator<TSource>(IEnumerable<TSource> source, TSource element)
+        {
+            yield return element;
+            foreach (TSource e1 in source) yield return e1;
+        }
+#endif
+
         public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> resultSelector) {
             if (first == null) throw Error.ArgumentNull("first");
             if (second == null) throw Error.ArgumentNull("second");
index bb161cb53f241976aef62d70120ea3fc71f52dc1..55e173b3542badb18b08af2c5308bbe8c8e4a400 100644 (file)
@@ -241,5 +241,19 @@ namespace System.Security.Cryptography {
                 return s_sha512;
             }
         }
+
+#if NETSTANDARD
+        public static CngAlgorithm ECDiffieHellman {
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public static CngAlgorithm ECDsa {
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+#endif
     }
 }
index 46870878014e49cf142570cd30922c6cac788540..2429495c819bfdb585680e22680b3d6d71d35ae7 100644 (file)
@@ -32,7 +32,206 @@ namespace System.Security.Cryptography {
     [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
     public sealed class CngKey : IDisposable {
 #if MONO
+        public CngAlgorithmGroup AlgorithmGroup {
+            [SecuritySafeCritical]
+            [Pure]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public CngAlgorithm Algorithm {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public CngExportPolicies ExportPolicy {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public SafeNCryptKeyHandle Handle {
+            [System.Security.SecurityCritical]
+            [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public bool IsEphemeral {
+            [SecuritySafeCritical]
+            [Pure]
+            get {
+                throw new NotImplementedException ();
+            }
+
+            [System.Security.SecurityCritical]
+            private set {
+                throw new NotImplementedException ();
+           }
+        }
+
+        public bool IsMachineKey {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public string KeyName {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public int KeySize {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public CngKeyUsages KeyUsage {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public IntPtr ParentWindowHandle {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+
+            [SecuritySafeCritical]
+            [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+            set {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public CngProvider Provider {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public SafeNCryptProviderHandle ProviderHandle {
+            [System.Security.SecurityCritical]
+            [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public string UniqueName {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public CngUIPolicy UIPolicy {
+            [SecuritySafeCritical]
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public static CngKey Create(CngAlgorithm algorithm) {
+            throw new NotImplementedException ();
+        }
+
+        public static CngKey Create(CngAlgorithm algorithm, string keyName) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public static CngKey Create(CngAlgorithm algorithm, string keyName, CngKeyCreationParameters creationParameters) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public void Delete() {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")]
         public void Dispose() {
+            throw new NotImplementedException ();
+        }
+
+        public static bool Exists(string keyName) {
+            throw new NotImplementedException ();
+        }
+
+        public static bool Exists(string keyName, CngProvider provider) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")]
+        public static bool Exists(string keyName, CngProvider provider, CngKeyOpenOptions options) {
+            throw new NotImplementedException ();
+        }
+
+        public static CngKey Import(byte[] keyBlob, CngKeyBlobFormat format) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public static CngKey Import(byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public byte[] Export(CngKeyBlobFormat format) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+        public CngProperty GetProperty(string name, CngPropertyOptions options) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+        public bool HasProperty(string name, CngPropertyOptions options) {
+            throw new NotImplementedException ();
+        }
+
+        public static CngKey Open(string keyName) {
+            throw new NotImplementedException ();
+        }
+
+        public static CngKey Open(string keyName, CngProvider provider) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public static CngKey Open(string keyName, CngProvider provider, CngKeyOpenOptions openOptions) {
+            throw new NotImplementedException ();
+        }
+
+        [System.Security.SecurityCritical]
+        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+        public static CngKey Open(SafeNCryptKeyHandle keyHandle, CngKeyHandleOpenOptions keyHandleOpenOptions) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
+        public void SetProperty(CngProperty property) {
+            throw new NotImplementedException ();
         }
 #else
         private SafeNCryptKeyHandle m_keyHandle;
index d5e9331e57698b0410a270b4ab2db766ec45061c..6592635e850ebd0fac3eb658c01244722426e99a 100644 (file)
@@ -119,6 +119,20 @@ namespace System.Security.Cryptography {
             }
         }
 
+#if NETSTANDARD
+        public static CngKeyBlobFormat EccFullPrivateBlob {
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+
+        public static CngKeyBlobFormat EccFullPublicBlob {
+            get {
+                throw new NotImplementedException ();
+            }
+        }
+#endif
+
         public static CngKeyBlobFormat GenericPrivateBlob {
             get {
                 Contract.Ensures(Contract.Result<CngKeyBlobFormat>() != null);
index 22fb8b505282c8c34974ef47c336b90df0c1e7ba..79202306c85226934f4be7a334f6ffd7c7be5ad2 100644 (file)
@@ -41,6 +41,38 @@ namespace System.Security.Cryptography {
             return CryptoConfig.CreateFromName(algorithm) as ECDsa;
         }
 
+#if NETSTANDARD
+        public static ECDsa Create (ECCurve curve)
+        {
+            throw new NotImplementedException ();
+        }
+
+        public static ECDsa Create (ECParameters parameters)
+        {
+            throw new NotImplementedException ();
+        }
+
+        public virtual ECParameters ExportExplicitParameters (bool includePrivateParameters)
+        {
+            throw new NotImplementedException ();
+        }
+
+        public virtual ECParameters ExportParameters (bool includePrivateParameters)
+        {
+            throw new NotImplementedException ();
+        }
+
+        public virtual void GenerateKey (ECCurve curve)
+        {
+            throw new NotImplementedException ();
+        }
+
+        public virtual void ImportParameters (ECParameters parameters)
+        {
+            throw new NotImplementedException ();
+        }
+#endif
+
         //
         // Signature operations
         //
index 1dcebb46d34ecd2ceb352a2d6b28e72cf71b33ab..ec51a5c6653a1842a70a4e1abd92b39506c56a87 100644 (file)
@@ -19,6 +19,34 @@ namespace System.Security.Cryptography {
     [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
     public sealed class ECDsaCng : ECDsa {
 #if MONO
+        public ECDsaCng() : this(521) {
+        }
+
+        public ECDsaCng(int keySize) {
+            throw new NotImplementedException ();
+        }
+
+        [SecuritySafeCritical]
+        public ECDsaCng(CngKey key) {
+            throw new NotImplementedException ();
+        }
+
+#if NETSTANDARD
+        public ECDsaCng(ECCurve curve) {
+            throw new NotImplementedException ();
+        }
+#endif
+
+        public CngKey Key {
+            get {
+                throw new NotImplementedException ();
+            }
+
+            private set {
+                throw new NotImplementedException ();
+            }
+        }
+
         public override byte[] SignHash(byte[] hash) {
             throw new NotImplementedException();
         }
index dda03fe7f378ae3ed0e1e9e785068e3941c4edc0..78764bb468033653fb802d0a842c0913176993a3 100644 (file)
@@ -11,6 +11,34 @@ namespace System.Security.Cryptography
     public sealed class RSACng : RSA
     {
 #if MONO
+        public RSACng() : this(2048) { }
+
+        public RSACng(int keySize)
+        {
+            throw new NotImplementedException ();
+        }
+
+#if NETSTANDARD
+        public RSACng(CngKey key)
+        {
+            throw new NotImplementedException ();
+        }
+#endif
+
+        public CngKey Key
+        {
+            [SecuritySafeCritical]
+            get
+            {
+                throw new NotImplementedException ();
+            }
+
+            private set
+            {
+                throw new NotImplementedException ();
+            }
+        }
+
         public override RSAParameters ExportParameters(bool includePrivateParameters)
         {
             throw new NotImplementedException();
index 42743232cf72ab204be6f1ea18589b80d6eb29e1..bb1ad6812cad6277ef8039ee4426986f8d659254 100644 (file)
@@ -255,6 +255,17 @@ namespace System.Net {
         }
 #endif
 
+#if NETSTANDARD
+        public string this[string name] {
+            get {
+                throw new NotImplementedException ();
+            }
+            set {
+                throw new NotImplementedException ();
+            }
+        }
+#endif
+
 #if !FEATURE_PAL || MONO
         private bool AllowHttpRequestHeader {
             get {
index 1a2adb1cfdb3d06fb2e66ebf99838a0a122abb67..7b9b1e1911554202ca41795357d004fc2f7dfe04 100644 (file)
@@ -471,7 +471,62 @@ namespace System.Text.RegularExpressions {
                 }
             }
         }
-        
+
+#if NETSTANDARD
+        protected IDictionary Caps
+        {
+            get
+            {
+                var dict = new Dictionary<int, int>();
+
+                foreach (int key in caps.Keys)
+                {
+                    dict.Add (key, (int)caps[key]);
+                }
+
+                return dict;
+            }
+            set
+            {
+                if (value == null)
+                    throw new ArgumentNullException("value");
+
+                caps = new Hashtable (value.Count);
+                foreach (DictionaryEntry entry in value)
+                {
+                    caps[(int)entry.Key] = (int)entry.Value;
+                }
+            }
+        }
+
+        protected IDictionary CapNames
+        {
+            get
+            {
+                var dict = new Dictionary<string, int>();
+
+                foreach (string key in capnames.Keys)
+                {
+                    dict.Add (key, (int)capnames[key]);
+                }
+
+                return dict;
+            }
+            set
+            {
+                if (value == null)
+                    throw new ArgumentNullException("value");
+
+                capnames = new Hashtable (value.Count);
+                foreach (DictionaryEntry entry in value)
+                {
+                    capnames[(string)entry.Key] = (int)entry.Value;
+                }
+            }
+        }
+#endif
+
         /// <devdoc>
         ///    <para>
         ///       Returns the options passed into the constructor
index fe0253ba38cb1dac7dddb2d0a6476c8a59b269a4..48b508d50de2970bf5ccd25d8a6fa9c1b55b9447 100644 (file)
@@ -33,6 +33,21 @@ namespace System
             }
         }
 
+#if NETSTANDARD
+        public static string TargetFrameworkName
+        {
+            get
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        public static object GetData (string name)
+        {
+            throw new NotImplementedException();
+        }
+#endif
+
         #region Switch APIs
 #if !MONO
         static AppContext()
index dd48a6f05b183ab8ea2f547135d76393ebaf9a95..0e665fe7f5b0149ad30c17a21bec4e1ce8d54405 100644 (file)
@@ -761,8 +761,8 @@ namespace CorCompare
                                                method.Name = "~" + name;
                                        }
 
-                                       // TODO: Better check
-                                       if (t != type && list.Any (l => l.DeclaringType != method.DeclaringType && l.Name == method.Name && l.Parameters.Count == method.Parameters.Count))
+                                       if (t != type && list.Any (l => l.DeclaringType != method.DeclaringType && l.Name == method.Name && l.Parameters.Count == method.Parameters.Count &&
+                                                                  l.Parameters.SequenceEqual (method.Parameters, new ParameterComparer ())))
                                                continue;
 
                                        list.Add (method);
@@ -771,7 +771,7 @@ namespace CorCompare
                                if (!fullAPI)
                                        break;
 
-                               if (!t.IsInterface || t.IsEnum)
+                               if (t.IsInterface || t.IsEnum)
                                        break;
 
                                if (t.BaseType == null || t.BaseType.FullName == "System.Object")
@@ -784,6 +784,19 @@ namespace CorCompare
                        return list.ToArray ();
                }
 
+               sealed class ParameterComparer : IEqualityComparer<ParameterDefinition>
+               {
+                       public bool Equals (ParameterDefinition x, ParameterDefinition y)
+                       {
+                               return x.ParameterType.Name == y.ParameterType.Name;
+                       }
+
+                       public int GetHashCode (ParameterDefinition obj)
+                       {
+                               return obj.ParameterType.Name.GetHashCode ();
+                       }
+               }
+
                static bool IsFinalizer (MethodDefinition method)
                {
                        if (method.Name != "Finalize")
@@ -1518,15 +1531,13 @@ namespace CorCompare
 
                                ParameterDefinition info = infos [i];
 
-                               string modifier;
-                               if ((info.Attributes & ParameterAttributes.In) != 0)
-                                       modifier = "in";
-                               else if ((info.Attributes & ParameterAttributes.Out) != 0)
-                                       modifier = "out";
-                               else
-                                       modifier = string.Empty;
+                               if (info.ParameterType.IsByReference) {
+                                       string modifier;
+                                       if ((info.Attributes & (ParameterAttributes.Out | ParameterAttributes.In)) == ParameterAttributes.Out)
+                                               modifier = "out";
+                                       else
+                                               modifier = "ref";
 
-                               if (modifier.Length > 0) {
                                        signature.Append (modifier);
                                        signature.Append (" ");
                                }
index 6d926858c97ae364e320dfeb5d19993a96e929c6..bb93b0e0619a7043094c3271509202193411337d 100644 (file)
@@ -1,37 +1,15 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <PropertyGroup>\r
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>8.0.30703</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}</ProjectGuid>\r
+    <ProjectGuid>{804E854F-E8F5-4E2B-807A-4FAF4BE99C03}</ProjectGuid>\r
     <OutputType>Exe</OutputType>\r
     <RootNamespace>mono_api_info</RootNamespace>\r
     <AssemblyName>mono-api-info</AssemblyName>\r
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-    <FileUpgradeFlags>\r
-    </FileUpgradeFlags>\r
-    <UpgradeBackupLocation>\r
-    </UpgradeBackupLocation>\r
-    <OldToolsVersion>3.5</OldToolsVersion>\r
-    <PublishUrl>publish\</PublishUrl>\r
-    <Install>true</Install>\r
-    <InstallFrom>Disk</InstallFrom>\r
-    <UpdateEnabled>false</UpdateEnabled>\r
-    <UpdateMode>Foreground</UpdateMode>\r
-    <UpdateInterval>7</UpdateInterval>\r
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r
-    <UpdatePeriodically>false</UpdatePeriodically>\r
-    <UpdateRequired>false</UpdateRequired>\r
-    <MapFileExtensions>true</MapFileExtensions>\r
-    <ApplicationRevision>0</ApplicationRevision>\r
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r
-    <IsWebBootstrapper>false</IsWebBootstrapper>\r
-    <UseApplicationTrust>false</UseApplicationTrust>\r
-    <BootstrapperEnabled>true</BootstrapperEnabled>\r
-    <TargetFrameworkProfile />\r
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+    <ProductVersion>8.0.30703</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
@@ -55,6 +33,9 @@
     <Reference Include="System" />\r
     <Reference Include="System.Core" />\r
     <Reference Include="System.Xml" />\r
+    <Reference Include="Mono.Cecil">\r
+      <HintPath>..\..\class\lib\net_4_x\Mono.Cecil.dll</HintPath>\r
+    </Reference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Compile Include="AssemblyResolver.cs" />\r
       <Link>Options.cs</Link>\r
     </Compile>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">\r
-      <Visible>False</Visible>\r
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\r
-      <Install>false</Install>\r
-    </BootstrapperPackage>\r
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">\r
-      <Visible>False</Visible>\r
-      <ProductName>.NET Framework 3.5 SP1</ProductName>\r
-      <Install>true</Install>\r
-    </BootstrapperPackage>\r
-  </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="AfterBuild">\r
   </Target>\r
   -->\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\..\external\cecil\Mono.Cecil.csproj">\r
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>\r
-      <Name>Mono.Cecil</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
 </Project>
\ No newline at end of file
index 9f89a91d5f2bd8f58fc470a75f81848ec33493de..4cde34937b72a59e5f28737c7f45a41d40fb294f 100644 (file)
@@ -500,14 +500,24 @@ typedef struct {
 /* Rd := (Rm * Rs)[31:0]; 32 x 32 -> 32 */
 #define ARM_MUL_COND(p, rd, rm, rs, cond) \
        ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 0, cond))
+#define ARM_UMULL_COND(p, rdhi, rdlo, rm, rs, cond) \
+       ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_UMULL, rdhi, rm, rs, rdlo, 0, cond))
+#define ARM_SMULL_COND(p, rdhi, rdlo, rm, rs, cond) \
+       ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_SMULL, rdhi, rm, rs, rdlo, 0, cond))
 #define ARM_MUL(p, rd, rm, rs) \
        ARM_MUL_COND(p, rd, rm, rs, ARMCOND_AL)
+#define ARM_UMULL(p, rdhi, rdlo, rm, rs) \
+       ARM_UMULL_COND(p, rdhi, rdlo, rm, rs, ARMCOND_AL)
+#define ARM_SMULL(p, rdhi, rdlo, rm, rs) \
+       ARM_SMULL_COND(p, rdhi, rdlo, rm, rs, ARMCOND_AL)
 #define ARM_MULS_COND(p, rd, rm, rs, cond) \
        ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 1, cond))
 #define ARM_MULS(p, rd, rm, rs) \
        ARM_MULS_COND(p, rd, rm, rs, ARMCOND_AL)
 #define ARM_MUL_REG_REG(p, rd, rm, rs) ARM_MUL(p, rd, rm, rs)
 #define ARM_MULS_REG_REG(p, rd, rm, rs) ARM_MULS(p, rd, rm, rs)
+#define ARM_UMULL_REG_REG(p, rdhi, rdlo, rm, rs) ARM_UMULL(p, rdhi, rdlo, rm, rs)
+#define ARM_SMULL_REG_REG(p, rdhi, rdlo, rm, rs) ARM_SMULL(p, rdhi, rdlo, rm, rs)
 
 /* inline */
 #define ARM_IASM_MUL_COND(rd, rm, rs, cond) \
index a35a7a39f21405c92b2b9602205116099f4b7852..bc57ec67f9219aeb4dac3df784fb37820d4d931b 100644 (file)
@@ -42,6 +42,257 @@ mono_bitset_mp_new_noinit (MonoMemPool *mp,  guint32 max_size)
        return mono_bitset_mem_new (mem, max_size, MONO_BITSET_DONT_FREE);
 }
 
+struct magic_unsigned {
+       guint32 magic_number;
+       gboolean addition;
+       int shift;
+};
+
+struct magic_signed {
+       gint32 magic_number;
+       int shift;
+};
+
+/* http://www.hackersdelight.org/hdcodetxt/magicu.c.txt */
+static struct magic_unsigned
+compute_magic_unsigned (guint32 divisor) {
+       guint32 nc, delta, q1, r1, q2, r2;
+       struct magic_unsigned magu;
+       gboolean gt = FALSE;
+       int p;
+
+       magu.addition = 0;
+       nc = -1 - (-divisor) % divisor;
+       p = 31;
+       q1 = 0x80000000 / nc;
+       r1 = 0x80000000 - q1 * nc;
+       q2 = 0x7FFFFFFF / divisor;
+       r2 = 0x7FFFFFFF - q2 * divisor;
+       do {
+               p = p + 1;
+               if (q1 >= 0x80000000)
+                       gt = TRUE;
+               if (r1 >= nc - r1) {
+                       q1 = 2 * q1 + 1;
+                       r1 = 2 * r1 - nc;
+               } else {
+                       q1 = 2 * q1;
+                       r1 = 2 * r1;
+               }
+               if (r2 + 1 >= divisor - r2) {
+                       if (q2 >= 0x7FFFFFFF)
+                               magu.addition = 1;
+                       q2 = 2 * q2 + 1;
+                       r2 = 2 * r2 + 1 - divisor;
+               } else {
+                       if (q2 >= 0x80000000)
+                               magu.addition = 1;
+                       q2 = 2 * q2;
+                       r2 = 2 * r2 + 1;
+               }
+               delta = divisor - 1 - r2;
+       } while (!gt && (q1 < delta || (q1 == delta && r1 == 0)));
+
+       magu.magic_number = q2 + 1;
+       magu.shift = p - 32;
+       return magu;
+}
+
+/* http://www.hackersdelight.org/hdcodetxt/magic.c.txt */
+static struct magic_signed
+compute_magic_signed (gint32 divisor) {
+       int p;
+       guint32 ad, anc, delta, q1, r1, q2, r2, t;
+       const guint32 two31 = 0x80000000;
+       struct magic_signed mag;
+
+       ad = abs (divisor);
+       t = two31 + ((unsigned)divisor >> 31);
+       anc = t - 1 - t % ad;
+       p = 31;
+       q1 = two31 / anc;
+       r1 = two31 - q1 * anc;
+       q2 = two31 / ad;
+       r2 = two31 - q2 * ad;
+       do {
+               p++;
+               q1 *= 2;
+               r1 *= 2;
+               if (r1 >= anc) {
+                       q1++;
+                       r1 -= anc;
+               }
+
+               q2 *= 2;
+               r2 *= 2;
+
+               if (r2 >= ad) {
+                       q2++;
+                       r2 -= ad;
+               }
+
+               delta = ad - r2;
+       } while (q1 < delta || (q1 == delta && r1 == 0));
+
+       mag.magic_number = q2 + 1;
+       if (divisor < 0)
+               mag.magic_number = -mag.magic_number;
+       mag.shift = p - 32;
+       return mag;
+}
+
+static gboolean
+mono_strength_reduction_division (MonoCompile *cfg, MonoInst *ins)
+{
+       gboolean allocated_vregs = FALSE;
+       /*
+        * We don't use it on 32bit systems because on those
+        * platforms we emulate long multiplication, driving the
+        * performance back down.
+        */
+       switch (ins->opcode) {
+               case OP_IDIV_UN_IMM: {
+                       guint32 tmp_regl;
+#if SIZEOF_REGISTER == 8
+                       guint32 dividend_reg;
+#else
+                       guint32 tmp_regi;
+#endif
+                       struct magic_unsigned mag;
+                       int power2 = mono_is_power_of_two (ins->inst_imm);
+
+                       /* The decomposition doesn't handle exception throwing */
+                       if (ins->inst_imm == 0)
+                               break;
+
+                       if (power2 >= 0) {
+                               ins->opcode = OP_ISHR_UN_IMM;
+                               ins->sreg2 = -1;
+                               ins->inst_imm = power2;
+                               break;
+                       }
+                       allocated_vregs = TRUE;
+                       /*
+                        * Replacement of unsigned division with multiplication,
+                        * shifts and additions Hacker's Delight, chapter 10-10.
+                        */
+                       mag = compute_magic_unsigned (ins->inst_imm);
+                       tmp_regl = alloc_lreg (cfg);
+#if SIZEOF_REGISTER == 8
+                       dividend_reg = alloc_lreg (cfg);
+                       MONO_EMIT_NEW_I8CONST (cfg, tmp_regl, mag.magic_number);
+                       MONO_EMIT_NEW_UNALU (cfg, OP_ZEXT_I4, dividend_reg, ins->sreg1);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_LMUL, tmp_regl, dividend_reg, tmp_regl);
+                       if (mag.addition) {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, tmp_regl, tmp_regl, 32);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_LADD, tmp_regl, tmp_regl, dividend_reg);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, ins->dreg, tmp_regl, mag.shift);
+                       } else {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, ins->dreg, tmp_regl, 32 + mag.shift);
+                       }
+#else
+                       tmp_regi = alloc_ireg (cfg);
+                       MONO_EMIT_NEW_ICONST (cfg, tmp_regi, mag.magic_number);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_BIGMUL_UN, tmp_regl, ins->sreg1, tmp_regi);
+                       /* Long shifts below will be decomposed during cprop */
+                       if (mag.addition) {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, tmp_regl, tmp_regl, 32);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IADDCC, MONO_LVREG_LS (tmp_regl), MONO_LVREG_LS (tmp_regl), ins->sreg1);
+                               /* MONO_LVREG_MS (tmp_reg) is 0, save in it the carry */
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IADC, MONO_LVREG_MS (tmp_regl), MONO_LVREG_MS (tmp_regl), MONO_LVREG_MS (tmp_regl));
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, tmp_regl, tmp_regl, mag.shift);
+                       } else {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, tmp_regl, tmp_regl, 32 + mag.shift);
+                       }
+                       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, MONO_LVREG_LS (tmp_regl));
+#endif
+                       mono_jit_stats.optimized_divisions++;
+                       break;
+               }
+               case OP_IDIV_IMM: {
+                       guint32 tmp_regl;
+#if SIZEOF_REGISTER == 8
+                       guint32 dividend_reg;
+#else
+                       guint32 tmp_regi;
+#endif
+                       struct magic_signed mag;
+                       int power2 = mono_is_power_of_two (ins->inst_imm);
+                       /* The decomposition doesn't handle exception throwing */
+                       /* Optimization with MUL does not apply for -1, 0 and 1 divisors */
+                       if (ins->inst_imm == 0 || ins->inst_imm == -1) {
+                               break;
+                       } else if (ins->inst_imm == 1) {
+                               ins->opcode = OP_MOVE;
+                               ins->inst_imm = 0;
+                               break;
+                       }
+                       allocated_vregs = TRUE;
+                       if (power2 == 1) {
+                               guint32 r1 = alloc_ireg (cfg);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, r1, ins->sreg1, 31);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IADD, r1, r1, ins->sreg1);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, ins->dreg, r1, 1);
+                               break;
+                       } else if (power2 > 0 && power2 < 31) {
+                               guint32 r1 = alloc_ireg (cfg);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, r1, ins->sreg1, 31);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, r1, r1, (32 - power2));
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IADD, r1, r1, ins->sreg1);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, ins->dreg, r1, power2);
+                               break;
+                       }
+
+                       /*
+                        * Replacement of signed division with multiplication,
+                        * shifts and additions Hacker's Delight, chapter 10-6.
+                        */
+                       mag = compute_magic_signed (ins->inst_imm);
+                       tmp_regl = alloc_lreg (cfg);
+#if SIZEOF_REGISTER == 8
+                       dividend_reg = alloc_lreg (cfg);
+                       MONO_EMIT_NEW_I8CONST (cfg, tmp_regl, mag.magic_number);
+                       MONO_EMIT_NEW_UNALU (cfg, OP_SEXT_I4, dividend_reg, ins->sreg1);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_LMUL, tmp_regl, dividend_reg, tmp_regl);
+                       if ((ins->inst_imm > 0 && mag.magic_number < 0) || (ins->inst_imm < 0 && mag.magic_number > 0)) {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_IMM, tmp_regl, tmp_regl, 32);
+                               if (ins->inst_imm > 0 && mag.magic_number < 0) {
+                                       MONO_EMIT_NEW_BIALU (cfg, OP_LADD, tmp_regl, tmp_regl, dividend_reg);
+                               } else if (ins->inst_imm < 0 && mag.magic_number > 0) {
+                                       MONO_EMIT_NEW_BIALU (cfg, OP_LSUB, tmp_regl, tmp_regl, dividend_reg);
+                               }
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_IMM, tmp_regl, tmp_regl, mag.shift);
+                       } else {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_IMM, tmp_regl, tmp_regl, 32 + mag.shift);
+                       }
+                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, ins->dreg, tmp_regl, SIZEOF_REGISTER * 8 - 1);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_LADD, ins->dreg, ins->dreg, tmp_regl);
+#else
+                       tmp_regi = alloc_ireg (cfg);
+                       MONO_EMIT_NEW_ICONST (cfg, tmp_regi, mag.magic_number);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_BIGMUL, tmp_regl, ins->sreg1, tmp_regi);
+                       if ((ins->inst_imm > 0 && mag.magic_number < 0) || (ins->inst_imm < 0 && mag.magic_number > 0)) {
+                               if (ins->inst_imm > 0 && mag.magic_number < 0) {
+                                       /* Opposite sign, cannot overflow */
+                                       MONO_EMIT_NEW_BIALU (cfg, OP_IADD, tmp_regi, MONO_LVREG_MS (tmp_regl), ins->sreg1);
+                               } else if (ins->inst_imm < 0 && mag.magic_number > 0) {
+                                       /* Same sign, cannot overflow */
+                                       MONO_EMIT_NEW_BIALU (cfg, OP_ISUB, tmp_regi, MONO_LVREG_MS (tmp_regl), ins->sreg1);
+                               }
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, tmp_regi, tmp_regi, mag.shift);
+                       } else {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, tmp_regi, MONO_LVREG_MS (tmp_regl), mag.shift);
+                       }
+                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, ins->dreg, tmp_regi, SIZEOF_REGISTER * 8 - 1);
+                       MONO_EMIT_NEW_BIALU (cfg, OP_IADD, ins->dreg, ins->dreg, tmp_regi);
+#endif
+                       mono_jit_stats.optimized_divisions++;
+                       break;
+               }
+       }
+       return allocated_vregs;
+}
+
 /*
  * Replaces ins with optimized opcodes.
  *
@@ -99,46 +350,19 @@ mono_strength_reduction_ins (MonoCompile *cfg, MonoInst *ins, const char **spec)
                        }
                }
                break;
-       case OP_IREM_UN_IMM:
-       case OP_IDIV_UN_IMM: {
-               int c = ins->inst_imm;
-               int power2 = mono_is_power_of_two (c);
+       case OP_IREM_UN_IMM: {
+               int power2 = mono_is_power_of_two (ins->inst_imm);
 
                if (power2 >= 0) {
-                       if (ins->opcode == OP_IREM_UN_IMM) {
-                               ins->opcode = OP_IAND_IMM;
-                               ins->sreg2 = -1;
-                               ins->inst_imm = (1 << power2) - 1;
-                       } else if (ins->opcode == OP_IDIV_UN_IMM) {
-                               ins->opcode = OP_ISHR_UN_IMM;
-                               ins->sreg2 = -1;
-                               ins->inst_imm = power2;
-                       }
+                       ins->opcode = OP_IAND_IMM;
+                       ins->sreg2 = -1;
+                       ins->inst_imm = (1 << power2) - 1;
                }
                break;
        }
+       case OP_IDIV_UN_IMM:
        case OP_IDIV_IMM: {
-               int c = ins->inst_imm;
-               int power2 = mono_is_power_of_two (c);
-
-               if (power2 == 1) {
-                       int r1 = mono_alloc_ireg (cfg);
-
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, r1, ins->sreg1, 31);
-                       MONO_EMIT_NEW_BIALU (cfg, OP_IADD, r1, r1, ins->sreg1);
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, ins->dreg, r1, 1);
-
-                       allocated_vregs = TRUE;
-               } else if (power2 > 0 && power2 < 31) {
-                       int r1 = mono_alloc_ireg (cfg);
-
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, r1, ins->sreg1, 31);
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, r1, r1, (32 - power2));
-                       MONO_EMIT_NEW_BIALU (cfg, OP_IADD, r1, r1, ins->sreg1);
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, ins->dreg, r1, power2);
-
-                       allocated_vregs = TRUE;
-               }
+               allocated_vregs = mono_strength_reduction_division (cfg, ins);
                break;
        }
 #if SIZEOF_REGISTER == 8
index 108b4abd256a9e381ac6d9cee0da9d329fc14e73..6983398027a5b2bb2e37143c455dceb3db0635cc 100644 (file)
@@ -4442,14 +4442,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_DMB (code, ARM_DMB_SY);
                        break;
                }
-               /*case OP_BIGMUL:
-                       ppc_mullw (code, ppc_r4, ins->sreg1, ins->sreg2);
-                       ppc_mulhw (code, ppc_r3, ins->sreg1, ins->sreg2);
+               case OP_BIGMUL:
+                       ARM_SMULL_REG_REG (code, ins->backend.reg3, ins->dreg, ins->sreg1, ins->sreg2);
                        break;
                case OP_BIGMUL_UN:
-                       ppc_mullw (code, ppc_r4, ins->sreg1, ins->sreg2);
-                       ppc_mulhwu (code, ppc_r3, ins->sreg1, ins->sreg2);
-                       break;*/
+                       ARM_UMULL_REG_REG (code, ins->backend.reg3, ins->dreg, ins->sreg1, ins->sreg2);
+                       break;
                case OP_STOREI1_MEMBASE_IMM:
                        code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_imm & 0xFF);
                        g_assert (arm_is_imm12 (ins->inst_offset));
index e1918076a8a97099a952d461b43b0d7e6f9fdfad..857f52ea70ba7353ffbd0ab1a32b6225d63fc87a 100644 (file)
@@ -3328,6 +3328,7 @@ register_jit_stats (void)
        mono_counters_register ("Aliases eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.alias_removed);
        mono_counters_register ("Aliased loads eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.loads_eliminated);
        mono_counters_register ("Aliased stores eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.stores_eliminated);
+       mono_counters_register ("Optimized immediate divisions", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.optimized_divisions);
 }
 
 static void runtime_invoke_info_free (gpointer value);
index 46b76b4fc28abd8decb995d0bbefb0707bc57b4e..acf723adbb2dabe5abbeb2f9a1fb7d79e2031e37 100644 (file)
@@ -1917,6 +1917,7 @@ typedef struct {
        gint32 alias_removed;
        gint32 loads_eliminated;
        gint32 stores_eliminated;
+       gint32 optimized_divisions;
        int methods_with_llvm;
        int methods_without_llvm;
        char *max_ratio_method;
index 1cfd4fdb897ecec92dd246cf7b6bc7452b68d09f..0ac6d87689963392f0f37e620a9e5bf1332fa64d 100644 (file)
@@ -254,6 +254,7 @@ BASE_TEST_CS_SRC_UNIVERSAL=         \
        long.cs                 \
        jit-ulong.cs            \
        jit-float.cs            \
+       constant-division.cs    \
        pop.cs                  \
        time.cs                 \
        pointer.cs              \
diff --git a/mono/tests/constant-division.cs b/mono/tests/constant-division.cs
new file mode 100644 (file)
index 0000000..1e9941c
--- /dev/null
@@ -0,0 +1,107 @@
+using System;
+using System.Reflection;
+using System.Reflection.Emit;
+
+namespace Test {
+       public class T {
+               private delegate TReturn OneParameter<TReturn, TParameter0> (TParameter0 p0);
+
+               private static Type[] SDivisionArgs = {typeof(int)};
+               private static Type[] UDivisionArgs = {typeof(uint)};
+
+               public static int Main (string[] args) {
+                       if (TestSDivision (2000, 10) != 0)
+                               return -1;
+
+                       if (TestUDivision (2000, 10) != 0)
+                               return -1;
+
+                       return 0;
+               }
+
+               private static int TestSDivision (int divisions, int invokes)
+               {
+                       int i, j;
+                       Random rand = new Random ();
+                       for (i = 0; i < divisions; i++) {
+                               int divisor = rand.Next (Int32.MinValue, Int32.MaxValue);
+
+                               if (divisor == 0 || divisor == -1)
+                                       continue;
+
+                               DynamicMethod SDivision = new DynamicMethod(
+                                       String.Format ("SDivision{0}", i),
+                                       typeof(int),
+                                       SDivisionArgs,
+                                       typeof(T).Module);
+
+                               ILGenerator il = SDivision.GetILGenerator();
+                               il.Emit(OpCodes.Ldarg_0);
+                               il.Emit(OpCodes.Ldc_I4, divisor);
+                               il.Emit(OpCodes.Div);
+                               il.Emit(OpCodes.Ret);
+
+                               OneParameter<int, int> invokeSDivision =
+                                       (OneParameter<int, int>)
+                                       SDivision.CreateDelegate(typeof(OneParameter<int, int>));
+
+                               for (j = 0; j < invokes; j++) {
+                                       int dividend = rand.Next (Int32.MinValue, Int32.MaxValue);
+                                       int result, expected;
+
+                                       result = invokeSDivision (dividend);
+                                       expected = dividend / divisor;
+
+                                       if (result != expected) {
+                                               Console.WriteLine("{0} / {1} = {2} != {3})", dividend, divisor, expected, result);
+                                               return -1;
+                                       }
+                               }
+                       }
+
+                       return 0;
+               }
+
+               private static int TestUDivision (int divisions, int invokes)
+               {
+                       int i, j;
+                       Random rand = new Random ();
+                       for (i = 0; i < divisions; i++) {
+                               uint divisor = (uint)rand.Next (Int32.MinValue, Int32.MaxValue);
+
+                               if (divisor == 0)
+                                       continue;
+
+                               DynamicMethod UDivision = new DynamicMethod(
+                                       String.Format ("UDivision{0}", i),
+                                       typeof(uint),
+                                       UDivisionArgs,
+                                       typeof(T).Module);
+
+                               ILGenerator il = UDivision.GetILGenerator();
+                               il.Emit(OpCodes.Ldarg_0);
+                               il.Emit(OpCodes.Ldc_I4, divisor);
+                               il.Emit(OpCodes.Div_Un);
+                               il.Emit(OpCodes.Ret);
+
+                               OneParameter<uint, uint> invokeUDivision =
+                                       (OneParameter<uint, uint>)
+                                       UDivision.CreateDelegate(typeof(OneParameter<uint, uint>));
+
+                               for (j = 0; j < invokes; j++) {
+                                       uint dividend = (uint)rand.Next (Int32.MinValue, Int32.MaxValue);
+                                       uint result, expected;
+
+                                       result = invokeUDivision (dividend);
+                                       expected = dividend / divisor;
+
+                                       if (result != expected) {
+                                               Console.WriteLine("{0} / {1} = {2} != {3})", dividend, divisor, expected, result);
+                                               return -1;
+                                       }
+                               }
+                       }
+                       return 0;
+               }
+       }
+}
index 29ed8ea7eee8498f00e11aaf06d54b7109a8150d..8d5cfb619f0657d5ab751afc0f509ba163b296f9 100644 (file)
@@ -1105,6 +1105,49 @@ public class Tests {
                return res;
        }
 
+       class Worker {
+               volatile bool stop = false;
+               public void Stop () {
+                       stop = true;
+               }
+
+               public void Work () {
+                       while (!stop) {
+                               for (int i = 0; i < 100; i++) {
+                                       var a = new double[80000];
+                                       Thread.Sleep (0);
+                               }
+                               GC.Collect ();
+                       }
+               }
+       }
+
+       public static int test_43_thread_attach_detach_contested () {
+               // Test plan: we want to create a race between the GC
+               // and native threads detaching.  When a native thread
+               // calls a managed delegate, it's attached to the
+               // runtime by the wrapper.  It is detached when the
+               // thread is destroyed and the TLS key destructor for
+               // MonoThreadInfo runs.  That destructor wants to take
+               // the GC lock.  So we create a lot of native threads
+               // while at the same time running a worker that
+               // allocates garbage and invokes the collector.
+               var w = new Worker ();
+               Thread t = new Thread(new ThreadStart (w.Work));
+               t.Start ();
+
+               for (int count = 0; count < 500; count++) {
+                       int res = mono_test_marshal_thread_attach (delegate (int i) {
+                                       Thread.Sleep (0);
+                                       return i + 1;
+                               });
+               }
+               Thread.Sleep (1000);
+               w.Stop ();
+               t.Join ();
+               return 43; 
+
+       }
        /*
         * Appdomain save/restore
         */
index 43df55e5359359b7f7d30c7bcb685916451a4d66..9792d5dbe217f09528628012ed96ed83b8e6ee7b 100644 (file)
@@ -282,7 +282,7 @@ MonoSelfSupendResult
 mono_threads_transition_state_poll (MonoThreadInfo *info)
 {
        int raw_state, cur_state, suspend_count;
-       g_assert (info == mono_thread_info_current ());
+       g_assert (mono_thread_info_is_current (info));
 
 retry_state_change:
        UNWRAP_THREAD_STATE (raw_state, cur_state, suspend_count, info);
index 23a3e759815e66268a5b2504f2ba32e62f23ea6e..33796525b90bec8fca74b00d013382cf4eec6398 100644 (file)
@@ -402,6 +402,8 @@ unregister_thread (void *arg)
 
        info = (MonoThreadInfo *) arg;
        g_assert (info);
+       g_assert (mono_thread_info_is_current (info));
+       g_assert (mono_thread_info_is_live (info));
 
        small_id = info->small_id;
 
@@ -637,6 +639,20 @@ mono_thread_info_is_exiting (void)
        return FALSE;
 }
 
+#ifndef HOST_WIN32
+static void
+thread_info_key_dtor (void *arg)
+{
+       /* Put the MonoThreadInfo back for the duration of the
+        * unregister code.  In some circumstances the thread needs to
+        * take the GC lock which may block which requires a coop
+        * state transition. */
+       mono_native_tls_set_value (thread_info_key, arg);
+       unregister_thread (arg);
+       mono_native_tls_set_value (thread_info_key, NULL);
+}
+#endif
+
 void
 mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
 {
@@ -648,7 +664,7 @@ mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
        res = mono_native_tls_alloc (&thread_info_key, NULL);
        res = mono_native_tls_alloc (&thread_exited_key, NULL);
 #else
-       res = mono_native_tls_alloc (&thread_info_key, (void *) unregister_thread);
+       res = mono_native_tls_alloc (&thread_info_key, (void *) thread_info_key_dtor);
        res = mono_native_tls_alloc (&thread_exited_key, (void *) thread_exited_dtor);
 #endif
 
@@ -1026,6 +1042,8 @@ static void
 mono_thread_info_suspend_lock_with_info (MonoThreadInfo *info)
 {
        g_assert (info);
+       g_assert (mono_thread_info_is_current (info));
+       g_assert (mono_thread_info_is_live (info));
 
        MONO_ENTER_GC_SAFE_WITH_INFO(info);