From 8eef6d2aff77d204e15d717de4fcc9cb4112dd1d Mon Sep 17 00:00:00 2001 From: DavoudEshtehari <61173489+DavoudEshtehari@users.noreply.github.com> Date: Thu, 13 Jan 2022 18:04:10 -0800 Subject: [PATCH] [Hotfix 4.0.1] | Update obsolete api calls in .NET 6 (#1471) --- doc/samples/AzureKeyVaultProviderExample.cs | 4 ++-- doc/samples/AzureKeyVaultProviderExample_2_0.cs | 4 ++-- doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs | 4 ++-- .../AzureKeyVaultProviderWithEnclaveProviderExample.cs | 4 ++-- ...AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs | 4 ++-- .../src/Microsoft/Data/SqlClient/EnclaveProviderBase.cs | 2 +- .../src/Microsoft/Data/SqlClient/SqlSecurityUtility.cs | 7 +++---- .../tests/FunctionalTests/AlwaysEncryptedTests/Utility.cs | 8 +++++--- .../ManualTests/AlwaysEncrypted/ExceptionTestAKVStore.cs | 2 +- .../AlwaysEncrypted/TestFixtures/DatabaseHelper.cs | 4 ++-- .../TestFixtures/Setup/CertificateUtilityWin.cs | 2 +- .../TestFixtures/Setup/ColumnEncryptionKey.cs | 4 ++-- .../tests/tools/TDS/TDS.Servers/GenericTDSServer.cs | 7 ++----- .../tools/TDS/TDS/Login7/TDSLogin7FedAuthOptionToken.cs | 7 ++----- 14 files changed, 29 insertions(+), 34 deletions(-) diff --git a/doc/samples/AzureKeyVaultProviderExample.cs b/doc/samples/AzureKeyVaultProviderExample.cs index 84c9ffb2da..e16a9a63a7 100644 --- a/doc/samples/AzureKeyVaultProviderExample.cs +++ b/doc/samples/AzureKeyVaultProviderExample.cs @@ -130,8 +130,8 @@ WITH VALUES ( private static string GetEncryptedValue(SqlColumnEncryptionAzureKeyVaultProvider sqlColumnEncryptionAzureKeyVaultProvider) { byte[] plainTextColumnEncryptionKey = new byte[32]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(plainTextColumnEncryptionKey); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(plainTextColumnEncryptionKey); byte[] encryptedColumnEncryptionKey = sqlColumnEncryptionAzureKeyVaultProvider.EncryptColumnEncryptionKey(s_akvUrl, s_algorithm, plainTextColumnEncryptionKey); string EncryptedValue = string.Concat("0x", BitConverter.ToString(encryptedColumnEncryptionKey).Replace("-", string.Empty)); diff --git a/doc/samples/AzureKeyVaultProviderExample_2_0.cs b/doc/samples/AzureKeyVaultProviderExample_2_0.cs index f241966458..d4c64f9684 100644 --- a/doc/samples/AzureKeyVaultProviderExample_2_0.cs +++ b/doc/samples/AzureKeyVaultProviderExample_2_0.cs @@ -118,8 +118,8 @@ WITH VALUES ( private static string GetEncryptedValue(SqlColumnEncryptionAzureKeyVaultProvider sqlColumnEncryptionAzureKeyVaultProvider) { byte[] plainTextColumnEncryptionKey = new byte[32]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(plainTextColumnEncryptionKey); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(plainTextColumnEncryptionKey); byte[] encryptedColumnEncryptionKey = sqlColumnEncryptionAzureKeyVaultProvider.EncryptColumnEncryptionKey(s_akvUrl, s_algorithm, plainTextColumnEncryptionKey); string EncryptedValue = string.Concat("0x", BitConverter.ToString(encryptedColumnEncryptionKey).Replace("-", string.Empty)); diff --git a/doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs b/doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs index e55e1f18c7..d691455f06 100644 --- a/doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs +++ b/doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs @@ -116,8 +116,8 @@ WITH VALUES ( private static string GetEncryptedValue(SqlColumnEncryptionAzureKeyVaultProvider sqlColumnEncryptionAzureKeyVaultProvider) { byte[] plainTextColumnEncryptionKey = new byte[32]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(plainTextColumnEncryptionKey); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(plainTextColumnEncryptionKey); byte[] encryptedColumnEncryptionKey = sqlColumnEncryptionAzureKeyVaultProvider.EncryptColumnEncryptionKey(s_akvUrl, s_algorithm, plainTextColumnEncryptionKey); string EncryptedValue = string.Concat("0x", BitConverter.ToString(encryptedColumnEncryptionKey).Replace("-", string.Empty)); diff --git a/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample.cs b/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample.cs index 628a2e663b..2091dab322 100644 --- a/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample.cs +++ b/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample.cs @@ -136,8 +136,8 @@ WITH VALUES ( private static string GetEncryptedValue(SqlColumnEncryptionAzureKeyVaultProvider sqlColumnEncryptionAzureKeyVaultProvider) { byte[] plainTextColumnEncryptionKey = new byte[32]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(plainTextColumnEncryptionKey); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(plainTextColumnEncryptionKey); byte[] encryptedColumnEncryptionKey = sqlColumnEncryptionAzureKeyVaultProvider.EncryptColumnEncryptionKey(s_akvUrl, s_algorithm, plainTextColumnEncryptionKey); string EncryptedValue = string.Concat("0x", BitConverter.ToString(encryptedColumnEncryptionKey).Replace("-", string.Empty)); diff --git a/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs b/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs index 4328be2958..27f97dac38 100644 --- a/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs +++ b/doc/samples/AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs @@ -123,8 +123,8 @@ WITH VALUES ( private static string GetEncryptedValue(SqlColumnEncryptionAzureKeyVaultProvider sqlColumnEncryptionAzureKeyVaultProvider) { byte[] plainTextColumnEncryptionKey = new byte[32]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(plainTextColumnEncryptionKey); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(plainTextColumnEncryptionKey); byte[] encryptedColumnEncryptionKey = sqlColumnEncryptionAzureKeyVaultProvider.EncryptColumnEncryptionKey(s_akvUrl, s_algorithm, plainTextColumnEncryptionKey); string EncryptedValue = string.Concat("0x", BitConverter.ToString(encryptedColumnEncryptionKey).Replace("-", string.Empty)); diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/EnclaveProviderBase.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/EnclaveProviderBase.cs index a32e46f581..0c72beac9d 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/EnclaveProviderBase.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/EnclaveProviderBase.cs @@ -151,7 +151,7 @@ protected void GetEnclaveSessionHelper(EnclaveSessionParameters enclaveSessionPa { if (shouldGenerateNonce) { - using (RandomNumberGenerator rng = new RNGCryptoServiceProvider()) + using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) { // Client decides to initiate the process of attesting the enclave and to establish a secure session with the enclave. // To ensure that server send new attestation request instead of replaying / re-sending the old token, we will create a nonce for current attestation request. diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlSecurityUtility.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlSecurityUtility.cs index 67535743af..4dabe4351d 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlSecurityUtility.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlSecurityUtility.cs @@ -59,15 +59,14 @@ internal static string GetSHA256Hash(byte[] input) } /// - /// Generates cryptographicall random bytes + /// Generates cryptographically random bytes /// /// No of cryptographically random bytes to be generated /// A byte array containing cryptographically generated random bytes internal static void GenerateRandomBytes(byte[] randomBytes) { - // Generate random bytes cryptographically. - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(randomBytes); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); } /// diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AlwaysEncryptedTests/Utility.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AlwaysEncryptedTests/Utility.cs index 07e9e93146..6bc51d6acd 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AlwaysEncryptedTests/Utility.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AlwaysEncryptedTests/Utility.cs @@ -95,8 +95,8 @@ internal static byte[] GenerateRandomBytes(int length) { // Generate random bytes cryptographically. byte[] randomBytes = new byte[length]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(randomBytes); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); return randomBytes; } @@ -348,8 +348,9 @@ internal static byte[] DecryptDataUsingAED(byte[] encryptedCellBlob, byte[] key, return decryptedData; } +#if NETFRAMEWORK /// - /// Create a self-signed certificate without private key. NET461 only. + /// Create a self-signed certificate without private key. /// internal static X509Certificate2 CreateCertificateWithNoPrivateKey() { @@ -376,6 +377,7 @@ internal static X509Certificate2 CreateCertificateWithNoPrivateKey() return certificate; } +#endif /// /// Gets hex representation of byte array. diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ExceptionTestAKVStore.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ExceptionTestAKVStore.cs index ec729b098a..389efad48d 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ExceptionTestAKVStore.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ExceptionTestAKVStore.cs @@ -218,7 +218,7 @@ public void AkvStoreProviderVerifyFunctionWithInvalidSignature(bool fEnclaveEnab Buffer.BlockCopy(cmkSignature, 0, tamperedCmkSignature, 0, tamperedCmkSignature.Length); // Corrupt one byte at a time 10 times - RandomNumberGenerator rng = new RNGCryptoServiceProvider(); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); byte[] randomIndexInCipherText = new byte[1]; for (int i = 0; i < 10; i++) { diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/DatabaseHelper.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/DatabaseHelper.cs index f4875ce63b..cd39d56b3c 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/DatabaseHelper.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/DatabaseHelper.cs @@ -174,8 +174,8 @@ internal static byte[] GenerateRandomBytes(int length) { // Generate random bytes cryptographically. byte[] randomBytes = new byte[length]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(randomBytes); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); return randomBytes; } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/CertificateUtilityWin.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/CertificateUtilityWin.cs index 66d3c3588d..72b14c8f51 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/CertificateUtilityWin.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/CertificateUtilityWin.cs @@ -188,7 +188,7 @@ internal static X509Certificate2 GetCertificate(string certificateName, StoreLoc /// internal static string GetCspPathFromCertificate(X509Certificate2 certificate) { - if (certificate.PrivateKey is RSACryptoServiceProvider csp) + if (certificate.GetRSAPrivateKey() is RSACryptoServiceProvider csp) { return string.Concat(csp.CspKeyContainerInfo.ProviderName, @"/", csp.CspKeyContainerInfo.KeyContainerName); } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/ColumnEncryptionKey.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/ColumnEncryptionKey.cs index 5ba9c166fe..19a2d2149c 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/ColumnEncryptionKey.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/Setup/ColumnEncryptionKey.cs @@ -60,8 +60,8 @@ public static byte[] GenerateRandomBytes(int length) { // Generate random bytes cryptographically. byte[] randomBytes = new byte[length]; - RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); - rngCsp.GetBytes(randomBytes); + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); return randomBytes; } diff --git a/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS.Servers/GenericTDSServer.cs b/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS.Servers/GenericTDSServer.cs index 30e362c931..421e3b275a 100644 --- a/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS.Servers/GenericTDSServer.cs +++ b/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS.Servers/GenericTDSServer.cs @@ -739,11 +739,8 @@ protected virtual TDSMessageCollection CheckTDSVersion(ITDSServerSession session private byte[] _GenerateRandomBytes(int count) { byte[] randomBytes = new byte[count]; - - RNGCryptoServiceProvider gen = new RNGCryptoServiceProvider(); - // Generate bytes - gen.GetBytes(randomBytes); - + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); return randomBytes; } diff --git a/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS/Login7/TDSLogin7FedAuthOptionToken.cs b/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS/Login7/TDSLogin7FedAuthOptionToken.cs index 57cb75bc57..412664ae1a 100644 --- a/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS/Login7/TDSLogin7FedAuthOptionToken.cs +++ b/src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS/Login7/TDSLogin7FedAuthOptionToken.cs @@ -366,11 +366,8 @@ private bool ReadSecurityTokenLogin(Stream source, uint optionDataLength) private byte[] _GenerateRandomBytes(int count) { byte[] randomBytes = new byte[count]; - - RNGCryptoServiceProvider gen = new RNGCryptoServiceProvider(); - // Generate bytes - gen.GetBytes(randomBytes); - + RandomNumberGenerator rng = RandomNumberGenerator.Create(); + rng.GetBytes(randomBytes); return randomBytes; } }