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
ouX509CertificateLoader.LoadCertificateFromFile
. - Si vous chargez du contenu PKCS12, utilisez
X509CertificateLoader.LoadPkcs12
,X509CertificateLoader.LoadPkcs12FromFile
,X509CertificateLoader.LoadPkcs12Collection
ouX509CertificateLoader.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.