Partager via


SYSLIB0057 : les constructeurs X509Certificate2 et X509Certificate pour du contenu de fichier ou binaire sont obsolètes

Les constructeurs sur X509Certificate et X509Certificate2 qui acceptent du contenu en tant que chemin d’accès au fichier byte[], ReadOnlySpan<byte> ou string sont obsolètes, à compter de la version .NET 9. Les méthodes Import sur X509Certificate2Collection sont également obsolètes. Les appeler dans du code génère un avertissement SYSLIB0057 à la compilation.

Motif de l’obsolescence

Les API affectées ont pris en charge le chargement de certificats dans plusieurs formats. Par exemple, new X509Certificate2(data) a chargé un certificat à partir de byte[] appelé data. data peut être l’un des formats pris en charge, notamment X.509, PKCS7 ou PKCS12/PFX.

Bien que cette méthode soit facile à utiliser, elle crée des problèmes où les données fournies par l’utilisateur sont transmises dans un format différent de celui prévu. Elle permet peut-être le chargement de PKCS12 où seul le chargement du contenu X.509 est prévu. Il est possible qu’elle crée des problèmes d’interopérabilité de la gestion des données de différentes manières.

Solution de contournement

Utilisez une autre API pour charger du contenu de certificat en fonction du type de contenu prévu.

Une nouvelle classe appelée X509CertificateLoader peut être utilisée pour charger du contenu X.509 ou PKCS12 :

  • Si vous chargez du contenu X.509, utilisez X509CertificateLoader.LoadCertificate ou X509CertificateLoader.LoadCertificateFromFile.
  • Si vous chargez du contenu PKCS12, utilisez X509CertificateLoader.LoadPkcs12, X509CertificateLoader.LoadPkcs12FromFile, X509CertificateLoader.LoadPkcs12Collection ou X509CertificateLoader.LoadPkcs12CollectionFromFile.
  • Si vous chargez du contenu PKCS7, utilisez SignedCms à partir du package System.Security.Cryptography.Pkcs pour inspecter les certificats dans du contenu PKCS7.
  • Si vous n’êtes pas certain du type de contenu que vous chargez, utilisez GetCertContentType pour déterminer le type de contenu et appeler l’API appropriée.

Le package Microsoft.Bcl.Cryptography fournit X509CertificateLoader pour .NET Framework et .NET Standard.

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 SYSLIB0057

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

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

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

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

Pour plus d’informations, consultez Supprimer des avertissements.