diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
index 5be0ed776f..1b74587f24 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
@@ -321,6 +321,9 @@
Microsoft\Data\SqlClient\EnclaveDelegate.NotSupported.cs
+
+ Microsoft\Data\SqlClient\SqlEnclaveAttestationParameters.NotSupported.cs
+
@@ -345,7 +348,9 @@
Microsoft\Data\SqlClient\EnclaveSessionCache.cs
-
+
+ Microsoft\Data\SqlClient\SqlEnclaveAttestationParameters.Crypto.cs
+
Microsoft\Data\SqlClient\EnclaveDelegate.Crypto.cs
@@ -529,7 +534,6 @@
-
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NetCoreApp.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NetCoreApp.cs
deleted file mode 100644
index 739187a7e9..0000000000
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NetCoreApp.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.Security.Cryptography;
-
-namespace Microsoft.Data.SqlClient
-{
- ///
- internal partial class SqlEnclaveAttestationParameters
- {
- private static readonly string _clientDiffieHellmanKeyName = "ClientDiffieHellmanKey";
- private static readonly string _inputName = "input";
- private static readonly string _className = "EnclaveAttestationParameters";
-
- ///
- internal ECDiffieHellman ClientDiffieHellmanKey { get; }
-
- ///
- internal SqlEnclaveAttestationParameters(int protocol, byte[] input, ECDiffieHellman clientDiffieHellmanKey)
- {
- _input = input ?? throw SQL.NullArgumentInConstructorInternal(_inputName, _className);
- Protocol = protocol;
- ClientDiffieHellmanKey = clientDiffieHellmanKey ?? throw SQL.NullArgumentInConstructorInternal(_clientDiffieHellmanKeyName, _className);
- }
- }
-}
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs
deleted file mode 100644
index 25f2737c70..0000000000
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-namespace Microsoft.Data.SqlClient
-{
- ///
- internal partial class SqlEnclaveAttestationParameters
- {
- private readonly byte[] _input = null;
-
- ///
- internal int Protocol { get; }
-
- ///
- internal byte[] GetInput()
- {
- return Clone(_input);
- }
-
- ///
- /// Deep copy the array into a new array
- ///
- ///
- ///
- private byte[] Clone(byte[] arrayToClone)
- {
-
- if (null == arrayToClone)
- {
- return null;
- }
-
- byte[] returnValue = new byte[arrayToClone.Length];
-
- for (int i = 0; i < arrayToClone.Length; i++)
- {
- returnValue[i] = arrayToClone[i];
- }
-
- return returnValue;
- }
- }
-}
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
index 45347617bc..9c854ced2e 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
@@ -440,9 +440,7 @@
-
- Component
-
+
Component
@@ -469,7 +467,9 @@
-
+
+ Microsoft\Data\SqlClient\SqlEnclaveAttestationParameters.Crypto.cs
+
Microsoft\Data\SqlClient\SqlEnclaveSession.cs
@@ -619,4 +619,4 @@
-
+
\ No newline at end of file
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs
index a5b4aad48a..4102bfa0d6 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.cs
@@ -2,68 +2,51 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+using System;
using System.Security.Cryptography;
namespace Microsoft.Data.SqlClient
{
-
///
internal class SqlEnclaveAttestationParameters
{
+ private readonly byte[] _input;
- private static readonly string _clientDiffieHellmanKeyName = "ClientDiffieHellmanKey";
- private static readonly string _inputName = "input";
- private static readonly string _className = "EnclaveAttestationParameters";
+ ///
+ internal SqlEnclaveAttestationParameters(int protocol, byte[] input, ECDiffieHellman clientDiffieHellmanKey)
+ {
+ if (input == null)
+ {
+ throw SQL.NullArgumentInConstructorInternal(nameof(input), nameof(SqlEnclaveAttestationParameters));
+ }
+ if (clientDiffieHellmanKey == null)
+ {
+ throw SQL.NullArgumentInConstructorInternal(nameof(clientDiffieHellmanKey), nameof(SqlEnclaveAttestationParameters));
+ }
- private readonly byte[] _input;
+ _input = input;
+ Protocol = protocol;
+ ClientDiffieHellmanKey = clientDiffieHellmanKey;
+ }
///
- internal int Protocol { get; }
-
+ internal int Protocol { get; private set; }
///
- internal ECDiffieHellman ClientDiffieHellmanKey { get; }
+ internal ECDiffieHellman ClientDiffieHellmanKey { get; private set; }
///
internal byte[] GetInput()
{
- return Clone(_input);
- }
-
- ///
- /// Deep copy the array into a new array
- ///
- ///
- ///
- private byte[] Clone(byte[] arrayToClone)
- {
-
- if (null == arrayToClone)
+ // return a new array for safety so the caller cannot mutate the original
+ if (_input == null)
{
return null;
}
- byte[] returnValue = new byte[arrayToClone.Length];
-
- for (int i = 0; i < arrayToClone.Length; i++)
- {
- returnValue[i] = arrayToClone[i];
- }
-
- return returnValue;
- }
-
- ///
- internal SqlEnclaveAttestationParameters(int protocol, byte[] input, ECDiffieHellman clientDiffieHellmanKey)
- {
- if (null == clientDiffieHellmanKey)
- { throw SQL.NullArgumentInConstructorInternal(_clientDiffieHellmanKeyName, _className); }
- if (null == input)
- { throw SQL.NullArgumentInConstructorInternal(_inputName, _className); }
-
- _input = input;
- Protocol = protocol;
- ClientDiffieHellmanKey = clientDiffieHellmanKey;
+ byte[] output = new byte[_input.Length];
+ Buffer.BlockCopy(_input, 0, output, 0, _input.Length);
+ return output;
}
}
}
diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.Crypto.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.Crypto.cs
new file mode 100644
index 0000000000..06262b364f
--- /dev/null
+++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.Crypto.cs
@@ -0,0 +1,52 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Security.Cryptography;
+
+namespace Microsoft.Data.SqlClient
+{
+ ///
+ internal class SqlEnclaveAttestationParameters
+ {
+ private readonly byte[] _input;
+
+ ///
+ internal SqlEnclaveAttestationParameters(int protocol, byte[] input, ECDiffieHellman clientDiffieHellmanKey)
+ {
+ if (input == null)
+ {
+ throw SQL.NullArgumentInConstructorInternal(nameof(input), nameof(SqlEnclaveAttestationParameters));
+ }
+ if (clientDiffieHellmanKey == null)
+ {
+ throw SQL.NullArgumentInConstructorInternal(nameof(clientDiffieHellmanKey), nameof(SqlEnclaveAttestationParameters));
+ }
+
+ _input = input;
+ Protocol = protocol;
+ ClientDiffieHellmanKey = clientDiffieHellmanKey;
+ }
+
+ ///
+ internal int Protocol { get; private set; }
+
+ ///
+ internal ECDiffieHellman ClientDiffieHellmanKey { get; private set; }
+
+ ///
+ internal byte[] GetInput()
+ {
+ // return a new array for safety so the caller cannot mutate the original
+ if (_input == null)
+ {
+ return null;
+ }
+
+ byte[] output = new byte[_input.Length];
+ Buffer.BlockCopy(_input, 0, output, 0, _input.Length);
+ return output;
+ }
+ }
+}
diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NotSupported.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NotSupported.cs
new file mode 100644
index 0000000000..0ae67d4a94
--- /dev/null
+++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlEnclaveAttestationParameters.NotSupported.cs
@@ -0,0 +1,19 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace Microsoft.Data.SqlClient
+{
+ ///
+ internal partial class SqlEnclaveAttestationParameters
+ {
+ ///
+ internal int Protocol { get; }
+
+ ///
+ internal byte[] GetInput()
+ {
+ return null;
+ }
+ }
+}