Skip to content

Commit de4bc32

Browse files
committed
Account for MacOS KeyStorageFlags quirk
MacOS will throw an exception when adding a certificate to the user store if the PersistKeySet key storage flag is set. Instead, use the UserKeySet flag.
1 parent e01cb98 commit de4bc32

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Fixtures/CertificateFixtureBase.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,15 @@ protected X509Certificate2 CreateCertificate(string subjectName, IEnumerable<str
8888
// This is to ensure that it's imported into the certificate stores with its private key.
8989
using (X509Certificate2 ephemeral = request.CreateSelfSigned(notBefore, notAfter))
9090
{
91+
X509KeyStorageFlags keyStorageFlags = OperatingSystem.IsMacOS()
92+
? X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.Exportable
93+
: X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable;
94+
9195
#if NET9_0_OR_GREATER
9296
return X509CertificateLoader.LoadPkcs12(
9397
ephemeral.Export(X509ContentType.Pkcs12, password),
9498
password,
95-
X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable,
99+
keyStorageFlags,
96100
new Pkcs12LoaderLimits(Pkcs12LoaderLimits.Defaults)
97101
{
98102
PreserveStorageProvider = true,
@@ -102,7 +106,7 @@ protected X509Certificate2 CreateCertificate(string subjectName, IEnumerable<str
102106
return new X509Certificate2(
103107
ephemeral.Export(X509ContentType.Pkcs12, password),
104108
password,
105-
X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
109+
keyStorageFlags);
106110
#endif
107111
}
108112
#else

0 commit comments

Comments
 (0)