-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Description
Description
The implementation of AesGcm on macOS will only support 16-byte (128-bit) authentication tags when using Encrypt or Decrypt in .NET 8.
Version
.NET 8 Preview 1
Previous behavior
AesGcm's Encrypt or Decrypt supported authentication tag sizes ranging from 12 to 16 bytes, provided OpenSSL was available, on macOS.
The TagByteSizes property reported supported sizes ranging from 12 to 16, inclusive.
New behavior
AesGcm's Encrypt or Decrypt supports authentication tag sizes limited to 16 bytes on macOS.
The TagByteSizes property now reports 16 as the supported tag size.
Type of breaking change
- Binary incompatible: Existing binaries may encounter a breaking change in behavior, such as failure to load/execute or different run-time behavior.
- Source incompatible: Source code may encounter a breaking change in behavior when targeting the new runtime/component/SDK, such as compile errors or different run-time behavior.
Reason for change
The AesGcm class on macOS previously achieved support through OpenSSL, which is an external dependency that needed to be installed and configured separately from .NET. AesGcm now uses Apple's CryptoKit to provide an implementation of AES-GCM so that OpenSSL is no longer a dependency for using AesGcm.
The CryptoKit implementation of AES-GCM does not support authentication tag sizes other than 128-bits, or 16 bytes.
Recommended action
Developers should use AES-GCM with 128-bit authentication tags with AesGcm for macOS support.
Feature area
Cryptography
Affected APIs
- P:System.Security.Cryptography.AesGcm.TagByteSizes
- M:System.Security.Cryptography.AesGcm.Encrypt (all overloads)
- M:System.Security.Cryptography.AesGcm.Decrypt (all overloads)