SYSLIB0053 : AesGcm doit indiquer la taille de balise requise

Les constructeurs AesGcm qui n’acceptent pas de taille de balise sont obsolètes, à partir de .NET 8 :

Les appeler dans du code génère un avertissement SYSLIB0053 à la compilation.

Motif de l’obsolescence

AES-GCM prend en charge les balises de différentes longueurs, de 12 à 16 octets, selon la plateforme. Auparavant, la classe AesGcm déterminait la taille de balise souhaitée en fonction de la taille de la balise elle-même. Par exemple, si Decrypt était appelé avec une balise de 14 octets, la balise était censée être de 14 octets.

Toutefois, AES-GCM prend en charge ces différentes longueurs par troncation. AES-GCM produit en mode natif les balises de 16 octets, et les balises plus courtes sont produites par troncation.

Si les appelants de Decrypt() obtiennent la balise à partir de l’entrée et transmettent la balise telle quelle, Decrypt() peut être utilisé avec la balise la plus courte possible, ce qui réduit la taille effective de la balise.

Pour aider les utilisateurs à s’assurer qu’ils utilisent des balises de la taille appropriée, de nouveaux constructeurs pour AesGcm ont été introduits et nécessitent la déclaration préalable de la taille de la balise attendue. Pendant Encrypt() ou Decrypt(), le paramètre de balise fourni doit correspondre à la taille déclarée dans le constructeur.

Solution de contournement

De nouveaux constructeurs qui acceptent une taille de balise ont été ajoutés dans .NET 8. Utilisez à la place l’un des constructeurs suivants :

Supprimer un avertissement

Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement dans le code ou dans votre fichier projet.

Pour supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactiver l’avertissement.

// Disable the warning.
#pragma warning disable SYSLIB0053

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0053

Pour supprimer tous les avertissements SYSLIB0053 dans votre projet, ajoutez une propriété <NoWarn> à votre fichier projet.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0053</NoWarn>
  </PropertyGroup>
</Project>

Pour plus d’informations, consultez Supprimer des avertissements.