Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AE with enclaves - multi-platform and .NET Standard 2.1 support #676

Merged
merged 48 commits into from
Aug 21, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
13857f2
Merge pull request #2 from dotnet/master
May 29, 2020
b807d0b
Merge remote-tracking branch 'upstream/master'
johnnypham Jun 4, 2020
26b0f35
Set up CI with Azure Pipelines
Jun 8, 2020
3da84f8
Delete azure-pipelines.yml
Jun 8, 2020
9b49213
Merge remote-tracking branch 'upstream/master'
johnnypham Jun 14, 2020
d02b69c
Set up CI with Azure Pipelines
Jun 8, 2020
896caa1
Delete azure-pipelines.yml
Jun 8, 2020
0c04741
Merge branch 'master' of https://github.com/johnnypham/SqlClient
johnnypham Jun 18, 2020
035ef3d
Merge remote-tracking branch 'upstream/master'
johnnypham Jun 21, 2020
d1dc8bb
Merge remote-tracking branch 'upstream/master'
johnnypham Jul 3, 2020
acbb0a5
Merge remote-tracking branch 'upstream/master'
johnnypham Jul 10, 2020
0d8b82f
aev2
johnnypham Jul 21, 2020
a98f2a0
azure attestation, vbs
johnnypham Jul 22, 2020
0d5c11e
Update EnclaveProviderBase.NetCoreApp.cs
johnnypham Jul 24, 2020
6eeaf13
Update EnclaveProviderBase.NetCoreApp.cs
johnnypham Jul 24, 2020
7bec0ea
replace tobytearray
johnnypham Jul 24, 2020
1831ef0
move new methods to utils
johnnypham Jul 24, 2020
b79a97e
minor changes
johnnypham Jul 27, 2020
0c898c3
ae apishould tests for linux
johnnypham Jul 29, 2020
361505a
test akv fixture
johnnypham Jul 29, 2020
c9785ea
Update SQLSetupStrategy.cs
johnnypham Jul 29, 2020
50c5b12
bulkcopyae akv test
johnnypham Jul 29, 2020
d1da600
apishould cross platform
johnnypham Jul 30, 2020
2a93a2e
test fixture changes
johnnypham Jul 30, 2020
743d6ce
Update BulkCopyAE.cs
johnnypham Jul 30, 2020
81654cc
Update BulkCopyAE.cs
johnnypham Jul 30, 2020
9ab0eac
test platform specific fixtures
johnnypham Jul 31, 2020
170ddc9
test platform specific fixtures
johnnypham Jul 31, 2020
ba1b31a
update ae tests for linux
johnnypham Jul 31, 2020
1cad3ff
minor changes
johnnypham Jul 31, 2020
daa2b13
netstandard
johnnypham Aug 4, 2020
c12121f
netstandard changes
johnnypham Aug 5, 2020
f264806
change targetframework property to targetframeworks
johnnypham Aug 5, 2020
0448362
Update SqlColumnEncryptionCertificateStoreProvider.Windows.cs
johnnypham Aug 7, 2020
9ba0fc9
Address feedback
johnnypham Aug 7, 2020
bcc7e6c
Merge branch 'aev2' of https://github.com/johnnypham/SqlClient into aev2
johnnypham Aug 7, 2020
4780d48
Merge remote-tracking branch 'upstream/master' into aev2
johnnypham Aug 7, 2020
104e0d6
fix culture exceptions in functional tests for ubuntu 18.04
johnnypham Aug 11, 2020
5575f1c
revert test changes
johnnypham Aug 11, 2020
7a1e9fb
test against .net standard 2.1
johnnypham Aug 13, 2020
5285c26
add dispose to new fixture class
johnnypham Aug 14, 2020
ec12750
Update AlwaysEncryptedEnclaveProviderUtils.cs
johnnypham Aug 18, 2020
dca6da8
Update AlwaysEncryptedEnclaveProviderUtils.cs
johnnypham Aug 18, 2020
e575519
Update AlwaysEncryptedEnclaveProviderUtils.cs
johnnypham Aug 19, 2020
50e2ee3
Merge remote-tracking branch 'upstream/master' into aev2
johnnypham Aug 20, 2020
58235f7
casing
johnnypham Aug 20, 2020
5d0fde8
Address comments
johnnypham Aug 21, 2020
a552100
Address comments
johnnypham Aug 21, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Address comments
  • Loading branch information
johnnypham committed Aug 21, 2020
commit 5d0fde82ad860573e319f8479cfdf6cb3cab227b
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ internal override void GetEnclaveSession(EnclaveSessionParameters enclaveSession
// Gets the information that SqlClient subsequently uses to initiate the process of attesting the enclave and to establish a secure session with the enclave.
internal override SqlEnclaveAttestationParameters GetAttestationParameters(string attestationUrl, byte[] customData, int customDataLength)
{
ECDiffieHellmanCng clientDHKey = new ECDiffieHellmanCng(384);
clientDHKey.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
clientDHKey.HashAlgorithm = CngAlgorithm.Sha256;
// The key derivation function and hash algorithm name are specified when key derivation is performed
ECDiffieHellman clientDHKey = ECDiffieHellman.Create();
clientDHKey.KeySize = 384;

return new SqlEnclaveAttestationParameters(2, new byte[] { }, clientDHKey);
}

// When overridden in a derived class, performs enclave attestation, generates a symmetric key for the session, creates a an enclave session and stores the session information in the cache.
internal override void CreateEnclaveSession(byte[] attestationInfo, ECDiffieHellmanCng clientDHKey, EnclaveSessionParameters enclaveSessionParameters, byte[] customData, int customDataLength, out SqlEnclaveSession sqlEnclaveSession, out long counter)
internal override void CreateEnclaveSession(byte[] attestationInfo, ECDiffieHellman clientDHKey, EnclaveSessionParameters enclaveSessionParameters, byte[] customData, int customDataLength, out SqlEnclaveSession sqlEnclaveSession, out long counter)
{
////for simulator: enclave does not send public key, and sends an empty attestation info
//// The only non-trivial content it sends is the session setup info (DH pubkey of enclave)
Expand Down Expand Up @@ -84,8 +84,9 @@ internal override void CreateEnclaveSession(byte[] attestationInfo, ECDiffieHell
Buffer.BlockCopy(attestationInfo, attestationInfoOffset, trustedModuleDHPublicKeySignature, 0,
checked((int)sizeOfTrustedModuleDHPublicKeySignatureBuffer));

CngKey k = CngKey.Import(trustedModuleDHPublicKey, CngKeyBlobFormat.EccPublicBlob);
byte[] sharedSecret = clientDHKey.DeriveKeyMaterial(k);
ECParameters ecParams = KeyConverter.ECCPublicKeyBlobToParams(trustedModuleDHPublicKey);
ECDiffieHellman enclaveDHKey = ECDiffieHellman.Create(ecParams);
byte[] sharedSecret = clientDHKey.DeriveKeyFromHash(enclaveDHKey.PublicKey, HashAlgorithmName.SHA256);
long sessionId = BitConverter.ToInt64(enclaveSessionHandle, 0);
sqlEnclaveSession = AddEnclaveSessionToCache(enclaveSessionParameters, sharedSecret, sessionId, out counter);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ private byte[] GetSharedSecret(EnclavePublicKey enclavePublicKey, EnclaveDiffieH
{
if (!rsa.VerifyData(enclaveDHInfo.PublicKey, enclaveDHInfo.PublicKeySignature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1))
{
throw new ArgumentException(Strings.GetSharedSecretFailed);
throw new ArgumentException(Strings.GetSharedSecretFailed);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<Compile Include="AlwaysEncryptedTests\SqlColumnEncryptionCertificateStoreProviderShould.cs" />
<Compile Include="AlwaysEncryptedTests\SqlColumnEncryptionCngProviderShould.cs" />
<Compile Include="AlwaysEncryptedTests\SqlColumnEncryptionCspProviderShould.cs" />
<Compile Include="SqlConnectionStringBuilderTest.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="AlwaysEncryptedTests\ConnectionStringBuilderShould.cs" />
Expand Down Expand Up @@ -59,7 +60,6 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
<PackageReference Include="System.Data.Odbc" Version="$(SystemDataOdbcVersion21)" />
<Compile Include="SqlConnectionStringBuilderTest.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' != 'netcoreapp2.1' AND '$(TargetGroup)' == 'netcoreapp'">
<PackageReference Include="System.Data.Odbc" Version="$(SystemDataOdbcVersion)" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ public EnclaveAzureDatabaseTests()
}
}

[PlatformSpecific(TestPlatforms.Windows)]
[ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.IsEnclaveAzureDatabaseSetup))]
public void ConnectToAzureDatabaseWithEnclave()
{
Expand Down