SYSLIB0057: Konstruktor X509Certificate2 dan X509Certificate untuk konten biner dan file sudah usang
Konstruktor pada X509Certificate dan X509Certificate2 yang menerima konten sebagai byte[]
, ReadOnlySpan<byte>
, atau string
jalur file usang, dimulai dari .NET 9. Metode Import pada X509Certificate2Collection juga usang. Memanggilnya dalam kode menghasilkan peringatan SYSLIB0057
pada waktu kompilasi.
Alasan kedaluarsa
API yang terpengaruh mendukung sertifikat pemuatan dalam beberapa format. Misalnya, new X509Certificate2(data)
memuat sertifikat dari yang byte[]
disebut data
. data
bisa menjadi salah satu format yang didukung, termasuk X.509, PKCS7, atau PKCS12/PFX.
Meskipun metode ini mudah digunakan, metode ini membuat masalah di mana data yang disediakan pengguna diteruskan dengan format yang berbeda dari yang dimaksudkan. Ini mungkin memungkinkan pemuatan PKCS12 di mana hanya konten X.509 yang dimaksudkan untuk dimuat. Atau mungkin menciptakan masalah interoperabilitas dari menangani data dengan cara yang berbeda.
Solusi Sementara
Gunakan API yang berbeda untuk memuat konten sertifikat, tergantung pada jenis konten yang dimaksudkan.
Kelas baru yang disebut X509CertificateLoader
dapat digunakan untuk memuat konten X.509 atau PKCS12:
- Jika Anda memuat konten X.509, gunakan
X509CertificateLoader.LoadCertificate
atauX509CertificateLoader.LoadCertificateFromFile
. - Jika Anda memuat konten PKCS12, gunakan
X509CertificateLoader.LoadPkcs12
, ,X509CertificateLoader.LoadPkcs12FromFile
X509CertificateLoader.LoadPkcs12Collection
, atauX509CertificateLoader.LoadPkcs12CollectionFromFile
. - Jika Anda memuat konten PKCS7, gunakan SignedCms dari paket System.Security.Cryptography.Pkcs untuk memeriksa sertifikat dalam konten PKCS7.
- Jika Anda tidak yakin tentang jenis konten yang Anda muat, gunakan GetCertContentType untuk menentukan jenis konten dan memanggil API yang sesuai.
Paket Microsoft.Bcl.Cryptography disediakan X509CertificateLoader
untuk .NET Framework dan .NET Standard.
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0057
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0057
Untuk menekan semua SYSLIB0057
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0057</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.