You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On macOS, the system libraries don't support AES-CCM for third-party code, so the <xref:System.Security.Cryptography.AesCcm> class uses OpenSSL for support. Users on macOS need to obtain an appropriate copy of OpenSSL (libcrypto) for this type to function, and it must be in a path that the system would load a library from by default. We recommend that you install OpenSSL from a package manager such as Homebrew.
90
-
91
-
The `libcrypto.0.9.7.dylib` and `libcrypto.0.9.8.dylib` libraries included in macOS are from earlier versions of OpenSSL and will not be used. The `libcrypto.35.dylib`, `libcrypto.41.dylib`, and `libcrypto.42.dylib` libraries are from LibreSSL and will not be used.
89
+
Prior to .NET 10, AES-CCM worked if a supported version of OpenSSL was present and the dynamic library loader could locate it. OpenSSL support on macOS was removed in .NET 10.
92
90
93
91
### AES-GCM and ChaCha20Poly1305 on iOS, tvOS, and MacCatalyst
94
92
@@ -173,11 +171,11 @@ Padding and digest support vary by platform:
<sup>1</sup> On non-Windows, <xref:System.Security.Cryptography.RSACryptoServiceProvider> can be used for compatibility with existing programs. In that case, any method that requires OS interop, such as opening a named key, throws a <xref:System.PlatformNotSupportedException>.
179
177
180
-
<sup>2</sup> On macOS, <xref:System.Security.Cryptography.RSAOpenSsl>works if OpenSSL is installed and an appropriate libcrypto dylib can be found via dynamic library loading. If an appropriate library can't be found, exceptions will be thrown.
178
+
<sup>2</sup> On macOS, prior to .NET 10, <xref:System.Security.Cryptography.RSAOpenSsl>worked if OpenSSL was installed and an appropriate libcrypto dylib could be found via dynamic library loading. This support was removed in .NET 10.
181
179
182
180
### ECDSA
183
181
@@ -210,9 +208,9 @@ ECDSA key curves are defined by the OS libraries and are subject to their limita
210
208
| Type | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
\* On macOS, <xref:System.Security.Cryptography.ECDsaOpenSsl>works if OpenSSL is installed in the system and an appropriate libcrypto dylib can be found via dynamic library loading. If an appropriate library can't be found, exceptions will be thrown.
213
+
\* On macOS, prior to .NET 10, <xref:System.Security.Cryptography.ECDsaOpenSsl>worked if OpenSSL was installed and an appropriate libcrypto dylib could be found via dynamic library loading. This support was removed in .NET 10.
216
214
217
215
### ECDH
218
216
@@ -230,7 +228,7 @@ The <xref:System.Security.Cryptography.ECDiffieHellman> class supports the "raw"
230
228
231
229
ECDH key curves are defined by the OS libraries and are subject to their limitations.
232
230
233
-
| Elliptic Curve | Windows 10| Windows 7 - 8.1 | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
231
+
| Elliptic Curve | Windows 10+| Windows 7 - 8.1 | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
\* On macOS, <xref:System.Security.Cryptography.ECDiffieHellmanOpenSsl>works if OpenSSL is installed and an appropriate libcrypto dylib can be found via dynamic library loading. If an appropriate library can't be found, exceptions will be thrown.
258
+
\* On macOS, prior to .NET 10, <xref:System.Security.Cryptography.ECDiffieHellmanOpenSsl>worked if OpenSSL was installed and an appropriate libcrypto dylib could be found via dynamic library loading. This support was removed in .NET 10.
261
259
262
260
### DSA
263
261
@@ -290,11 +288,103 @@ DSA (Digital Signature Algorithm) key generation is performed by the system libr
<sup>1</sup> On non-Windows, <xref:System.Security.Cryptography.DSACryptoServiceProvider> can be used for compatibility with existing programs. In that case, any method that requires system interop, such as opening a named key, throws a <xref:System.PlatformNotSupportedException>.
296
294
297
-
<sup>2</sup> On macOS, <xref:System.Security.Cryptography.DSAOpenSsl> works if OpenSSL is installed and an appropriate libcrypto dylib can be found via dynamic library loading. If an appropriate library can't be found, exceptions will be thrown.
295
+
<sup>2</sup> On macOS, prior to .NET 10, <xref:System.Security.Cryptography.DSAOpenSsl> worked if OpenSSL was installed and an appropriate libcrypto dylib could be found via dynamic library loading. This support was removed in .NET 10.
296
+
297
+
## Post-quantum cryptography
298
+
299
+
Post-quantum algorithms are available starting in .NET 10. They're also available for .NET Framework using the Microsoft.Bcl.Cryptography NuGet package. The following support table indicates the platform support for the built-in operating system cryptographic components, such as those created from `Generate` or `ImportFromPem`. Implementations that derive from the base class might have different support behaviors.
300
+
301
+
For the built-in algorithms, an `IsSupported` static property is available to determine if the platform supports any of the parameter sets.
302
+
303
+
The native interop types for post-quantum algorithms do not support key generation or importing. They exist specifically for interop scenarios with the native platform types, such as an `EVP_PKEY` on OpenSSL or `CngKey` on Windows.
304
+
305
+
### ML-KEM
306
+
307
+
| Algorithm | Windows | Linux | Apple | Android | Browser |
*<xref:System.Security.Cryptography.CompositeMLDsaCng>: Not supported
298
388
299
389
## X.509 Certificates
300
390
@@ -411,6 +501,24 @@ macOS doesn't support Offline CRL utilization, so `X509RevocationMode.Offline` i
411
501
412
502
macOS doesn't support a user-initiated timeout on CRL (Certificate Revocation List) / OCSP (Online Certificate Status Protocol) / AIA (Authority Information Access) downloading, so `X509ChainPolicy.UrlRetrievalTimeout` is ignored.
413
503
504
+
### Post-quantum cryptography certificates and PKCS12/PFX
505
+
506
+
Post-quantum certificate support also requires support from the primitive algorithm.
507
+
508
+
| Operation | Algorithm | Windows | Linux | Apple | Android | Browser |
0 commit comments