SYSLIB0053: AesGcm deve indicare le dimensioni del tag necessarie
I costruttori AesGcm che non accettano le dimensioni di un tag sono obsoleti, a partire da .NET 8:
La loro chiamata nel codice genera un avviso SYSLIB0053
in fase di compilazione.
Motivo dell'obsolescenza
AES-GCM supporta i tag di varie lunghezze, da 12 a 16 byte, a seconda della piattaforma. In precedenza, la classe AesGcm determinerebbe la dimensione desiderata del tag in base alle dimensioni del tag stesso. Ad esempio, se Decrypt è stato chiamato con un tag di 14 byte, si presuppone che il tag fosse 14 byte.
Tuttavia, AES-GCM supporta queste varie lunghezze per troncamento. AES-GCM produce in modo nativo tag a 16 byte e i tag più brevi vengono prodotti troncando il tag.
Se i chiamanti di Decrypt()
ottengono il tag dall'input e passano il tag così com'è, ciò consente l'uso di Decrypt()
con il tag più breve possibile, riducendo così le dimensioni effettive del tag.
Per aiutare i consumer a usare tag delle dimensioni corrette, sono stati introdotti nuovi costruttori per AesGcm che richiedono la dichiarazione anticipata delle dimensioni del tag previsto. Durante Encrypt()
o Decrypt()
, il parametro tag fornito deve corrispondere alle dimensioni dichiarate nel costruttore.
Soluzione alternativa
Sono stati aggiunti nuovi costruttori che accettano una dimensione di tag in .NET 8. Usare invece uno di questi costruttori:
Eliminare un avviso
Se è necessario usare le API obsolete, è possibile eliminare l'avviso nel codice o nel file di progetto.
Per eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare l'avviso.
// Disable the warning.
#pragma warning disable SYSLIB0053
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0053
Per eliminare tutti gli avvisi SYSLIB0053
nel progetto, aggiungere una proprietà <NoWarn>
al file di progetto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0053</NoWarn>
</PropertyGroup>
</Project>
Per altre informazioni, vedere Eliminare gli avvisi.