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
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -62,7 +62,7 @@ internal sealed class KeyConverter
// BCRYPT_RSAKEY_BLOB header
// byte[ExponentSize] publicExponent
// byte[ModulusSize] modulus
private readonly struct RSAPublicKeyBlob
private sealed class RSAPublicKeyBlob
{
// Size of an RSA public key blob
internal static readonly int Size = 539;
Expand All @@ -76,11 +76,24 @@ internal sealed class KeyConverter
internal static readonly int ModulusOffset = HeaderSize;
}

// Extracts the public key's modulus and exponent from an RSA public key blob
// and returns an RSAParameters object
internal static RSAParameters RSAPublicKeyBlobToParams(byte[] keyBlob)
{
Debug.Assert(keyBlob.Length == RSAPublicKeyBlob.Size,
$"RSA public key blob was not the expected length. Actual: {keyBlob.Length}. Expected: {RSAPublicKeyBlob.Size}");
return new RSAParameters()
{
Exponent = keyBlob.Skip(RSAPublicKeyBlob.ExponentOffset).Take(RSAPublicKeyBlob.ExponentSize).ToArray(),
Modulus = keyBlob.Skip(RSAPublicKeyBlob.ModulusOffset).Take(RSAPublicKeyBlob.ModulusSize).ToArray()
};
}

// The ECC public key blob is structured as follows:
// BCRYPT_ECCKEY_BLOB header
// byte[KeySize] X
// byte[KeySize] Y
private readonly struct ECCPublicKeyBlob
private sealed class ECCPublicKeyBlob
{
// Size of an ECC public key blob
internal static readonly int Size = 104;
Expand All @@ -91,24 +104,11 @@ internal sealed class KeyConverter
}

// Magic numbers identifying blob types
private readonly struct KeyBlobMagicNumber
private sealed class KeyBlobMagicNumber
johnnypham marked this conversation as resolved.
Show resolved Hide resolved
{
internal static readonly byte[] ECDHPublicP384 = new byte[] { 0x45, 0x43, 0x4b, 0x33 };
}

// Extracts the public key's modulus and exponent from an RSA public key blob
// and returns an RSAParameters object
internal static RSAParameters RSAPublicKeyBlobToParams(byte[] keyBlob)
{
Debug.Assert(keyBlob.Length == RSAPublicKeyBlob.Size,
$"RSA public key blob was not the expected length. Actual: {keyBlob.Length}. Expected: {RSAPublicKeyBlob.Size}");
return new RSAParameters()
{
Exponent = keyBlob.Skip(RSAPublicKeyBlob.ExponentOffset).Take(RSAPublicKeyBlob.ExponentSize).ToArray(),
Modulus = keyBlob.Skip(RSAPublicKeyBlob.ModulusOffset).Take(RSAPublicKeyBlob.ModulusSize).ToArray()
};
}

// Extracts the public key's X and Y coordinates from an ECC public key blob
// and returns an ECParameters object
internal static ECParameters ECCPublicKeyBlobToParams(byte[] keyBlob)
Expand Down