Sdílet prostřednictvím


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 nebo X509CertificateLoader.LoadCertificateFromFile.
  • Pokud načítáte obsah PKCS12, použijte X509CertificateLoader.LoadPkcs12, X509CertificateLoader.LoadPkcs12FromFile, X509CertificateLoader.LoadPkcs12Collectionnebo X509CertificateLoader.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í.