SYSLIB0057: Konstruktory X509Certificate2 a X509Certificate pro binární obsah a obsah souboru jsou zastaralé.
Konstruktory pro X509Certificate a X509Certificate2 které přijímají obsah jako byte[]
, ReadOnlySpan<byte>
nebo string
cestu k souboru jsou zastaralé, počínaje rozhraním .NET 9. Metody Import x509Certificate2Collection jsou také zastaralé. Volání v kódu generuje upozornění SYSLIB0057
v době kompilace.
Důvod obsoletion
Ovlivněná rozhraní API podporovala načítání certifikátů ve více formátech. Například new X509Certificate2(data)
načetl certifikát z volané data
.byte[]
data
může být jedním z podporovaných formátů, včetně X.509, PKCS7 nebo PKCS12/PFX.
I když se tato metoda snadno používala, vytvářela problémy, kdy byla data zadaná uživatelem předána s jiným formátem, než je zamýšleno. To může umožnit načtení PKCS12, kde byl načten pouze obsah X.509. Nebo může způsobovat problémy s interoperabilitou při zpracování dat různými způsoby.
Alternativní řešení
Pomocí jiného rozhraní API načtěte obsah certifikátu v závislosti na zamýšleném typu obsahu.
K načtení obsahu X.509 nebo PKCS12 lze použít novou třídu s názvem X509CertificateLoader
:
- Pokud načítáte obsah X.509, použijte
X509CertificateLoader.LoadCertificate
neboX509CertificateLoader.LoadCertificateFromFile
. - Pokud načítáte obsah PKCS12, použijte
X509CertificateLoader.LoadPkcs12
,X509CertificateLoader.LoadPkcs12FromFile
,X509CertificateLoader.LoadPkcs12Collection
neboX509CertificateLoader.LoadPkcs12CollectionFromFile
. - Pokud načítáte obsah PKCS7, použijte SignedCms z balíčku System.Security.Cryptography.Pkcs ke kontrole certifikátů v obsahu PKCS7.
- Pokud si nejste jistí, který typ obsahu načítáte, použijte GetCertContentType k určení typu obsahu a volání příslušného rozhraní API.
Balíček Microsoft.Bcl.Cryptography poskytuje X509CertificateLoader
rozhraní .NET Framework a .NET Standard.
Potlačení upozornění
Pokud musíte použít zastaralá rozhraní API, můžete potlačit upozornění v kódu nebo v souboru projektu.
Chcete-li potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, které chcete zakázat a znovu povolit upozornění.
// Disable the warning.
#pragma warning disable SYSLIB0057
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0057
Pokud chcete potlačit všechna SYSLIB0057
upozornění v projektu, přidejte <NoWarn>
do souboru projektu vlastnost.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0057</NoWarn>
</PropertyGroup>
</Project>
Další informace naleznete v tématu Potlačení upozornění.