X509Certificate和PublicKey的行為已改變。 當這些物件包含不含演算法參數的索引鍵時,它們現在會傳回 null,而不是空陣列。
引進的版本
.NET 10
先前的行為
先前, X509Certificate 或 PublicKey 包含沒有演算法參數的索引鍵的物件在存取索引鍵演算法參數時傳回空陣列。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters would be an empty array if no algorithm parameters were present
新行為
從 .NET 10 開始, X509Certificate 或 PublicKey 包含沒有演算法參數的索引鍵的物件會在存取索引鍵演算法參數時傳回 null 。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters will be null if no algorithm parameters are present
破壞性變更的類型
變更的原因
X509Certificate、X509Certificate2和 PublicKey 類別會公開 主體公鑰資訊的相關信息。
主體公鑰資訊 的其中一個屬性是演算法的參數。
主體公鑰資訊 不需要包含演算法參數。 先前,這會以空的位元組陣列表示,這是無效的 ASN.1。 嘗試編碼或譯碼會導致例外狀況。 為了更清楚地表示不存在的索引鍵參數,現在會傳回 null,而且傳回演算法參數的成員已標註為傳回可為 Null 的值。
建議的動作
存取傳回有關主體公鑰資訊的演算法參數的成員時,預期該成員可能會傳回 null 並據此適當處理 null 值。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
if (parameters == null)
{
// Handle the absence of algorithm parameters
}
受影響的 API
- System.Security.Cryptography.X509Certificates.X509Certificate.GetKeyAlgorithmParameters()
- System.Security.Cryptography.X509Certificates.X509Certificate.GetKeyAlgorithmParametersString()
- System.Security.Cryptography.X509Certificates.PublicKey.PublicKey(Oid, AsnEncodedData, AsnEncodedData)
- System.Security.Cryptography.X509Certificates.PublicKey.EncodedParameters