除了啟用 OpenSSL 提供者支援的工作之外,也會對會影響 SafeEvpPKeyHandle.DuplicateHandle() 和採用 ECDsaOpenSsl 之 RSAOpenSsl 建構函式的 SafeEvpPKeyHandle 方法進行變更。 傳遞控制代碼的外部修改現在也會影響儲存在這些類別執行個體中的控制代碼。
先前的行為
DuplicateHandle() 建立了新的 EVP_PKEY 執行個體。 對重複金鑰的修改 (也就是透過對 OpenSSL API 的直接呼叫) 不會影響原始金鑰。
SafeEvpPKeyHandle.DuplicateHandle 是由採用 ECDsaOpenSsl 之 RSAOpenSsl 和 SafeEvpPKeyHandle 建構函式所呼叫。
新的行為
DuplicateHandle() 遞增現有 EVP_PKEY 的參考計數,並將控制代碼傳回至相同的金鑰。 這表示對修改 EVP_PKEY 之 OpenSSL API 的外部呼叫現在也會影響重複 SafeEvpPKeyHandle 執行個體。 這些 API 包括從這類控制代碼建立的 ECDsaOpenSsl 和 RSAOpenSsl 執行個體。
導入的版本
.NET 9 預覽 7
中斷性變更的類型
此變更為行為變更。
變更原因
這項變更是為了啟用 OpenSSL 提供者支援。 其副作用為部分效能得到改善。
建議的動作
避免修改傳入 .NET API 的 EVP_PKEY。 如果您無法避免修改 EVP_PKEY,請自行建立 EVP_PKEY 複本 (也就是將參數複製到新的 EVP_PKEY 執行個體)。
受影響的 API
- System.Security.Cryptography.SafeEvpPKeyHandle.DuplicateHandle()
- ECDsaOpenSsl(SafeEvpPKeyHandle)
- RSAOpenSsl(SafeEvpPKeyHandle)
每個接受來自 RSA 之 ECDsa 或 SafeEvpPKeyHandle 執行個體的 API 也會受到影響。