Skip to content

Commit

Permalink
Improvement | Dispose RandomNumberGenerator object (#1478)
Browse files Browse the repository at this point in the history
  • Loading branch information
EngRajabi authored Mar 9, 2022
1 parent fd1daa6 commit 43296f9
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,10 @@ internal static string GetSHA256Hash(byte[] input)
/// <returns>A byte array containing cryptographically generated random bytes</returns>
internal static void GenerateRandomBytes(byte[] randomBytes)
{
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}
}

/// <summary>
Expand Down Expand Up @@ -367,7 +369,7 @@ internal static void VerifyColumnMasterKeySignature(string keyStoreName, string
GetListOfProviderNamesThatWereSearched(connection, command));
}

if (ShouldUseInstanceLevelProviderFlow(keyStoreName,connection, command))
if (ShouldUseInstanceLevelProviderFlow(keyStoreName, connection, command))
{
isValidSignature = provider.VerifyColumnMasterKeyMetadata(keyPath, isEnclaveEnabled, CMKSignature);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,10 @@ internal static byte[] GenerateRandomBytes(int length)
{
// Generate random bytes cryptographically.
byte[] randomBytes = new byte[length];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}

return randomBytes;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,22 +218,24 @@ public void AkvStoreProviderVerifyFunctionWithInvalidSignature(bool fEnclaveEnab
Buffer.BlockCopy(cmkSignature, 0, tamperedCmkSignature, 0, tamperedCmkSignature.Length);

// Corrupt one byte at a time 10 times
RandomNumberGenerator rng = RandomNumberGenerator.Create();
byte[] randomIndexInCipherText = new byte[1];
for (int i = 0; i < 10; i++)
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
Assert.True(fixture.AkvStoreProvider.VerifyColumnMasterKeyMetadata(DataTestUtility.AKVUrl, allowEnclaveComputations: fEnclaveEnabled, signature: tamperedCmkSignature), @"tamperedCmkSignature before tampering should be verified without any problems.");
byte[] randomIndexInCipherText = new byte[1];
for (int i = 0; i < 10; i++)
{
Assert.True(fixture.AkvStoreProvider.VerifyColumnMasterKeyMetadata(DataTestUtility.AKVUrl, allowEnclaveComputations: fEnclaveEnabled, signature: tamperedCmkSignature), @"tamperedCmkSignature before tampering should be verified without any problems.");

int startingByteIndex = 0;
rng.GetBytes(randomIndexInCipherText);
int startingByteIndex = 0;
rng.GetBytes(randomIndexInCipherText);

tamperedCmkSignature[startingByteIndex + randomIndexInCipherText[0]] = (byte)(cmkSignature[startingByteIndex + randomIndexInCipherText[0]] + 1);
tamperedCmkSignature[startingByteIndex + randomIndexInCipherText[0]] = (byte)(cmkSignature[startingByteIndex + randomIndexInCipherText[0]] + 1);

// Expect failed verification for invalid signature bytes
Assert.False(fixture.AkvStoreProvider.VerifyColumnMasterKeyMetadata(DataTestUtility.AKVUrl, allowEnclaveComputations: fEnclaveEnabled, signature: tamperedCmkSignature));
// Expect failed verification for invalid signature bytes
Assert.False(fixture.AkvStoreProvider.VerifyColumnMasterKeyMetadata(DataTestUtility.AKVUrl, allowEnclaveComputations: fEnclaveEnabled, signature: tamperedCmkSignature));

// Fix up the corrupted byte
tamperedCmkSignature[startingByteIndex + randomIndexInCipherText[0]] = cmkSignature[startingByteIndex + randomIndexInCipherText[0]];
// Fix up the corrupted byte
tamperedCmkSignature[startingByteIndex + randomIndexInCipherText[0]] = cmkSignature[startingByteIndex + randomIndexInCipherText[0]];
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,10 @@ internal static byte[] GenerateRandomBytes(int length)
{
// Generate random bytes cryptographically.
byte[] randomBytes = new byte[length];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}
return randomBytes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ public static byte[] GenerateRandomBytes(int length)
{
// Generate random bytes cryptographically.
byte[] randomBytes = new byte[length];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);

using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}

return randomBytes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -739,8 +739,11 @@ protected virtual TDSMessageCollection CheckTDSVersion(ITDSServerSession session
private byte[] _GenerateRandomBytes(int count)
{
byte[] randomBytes = new byte[count];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}

return randomBytes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,8 +366,11 @@ private bool ReadSecurityTokenLogin(Stream source, uint optionDataLength)
private byte[] _GenerateRandomBytes(int count)
{
byte[] randomBytes = new byte[count];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}

return randomBytes;
}
}
Expand Down

0 comments on commit 43296f9

Please sign in to comment.