次の方法で共有


SafeEvpPKeyHandle.DuplicateHandle によるハンドルの up-ref

OpenSSL プロバイダーのサポートを有効にする作業と共に、SafeEvpPKeyHandle を受け取る ECDsaOpenSsl および RSAOpenSsl コンストラクターに影響を与える SafeEvpPKeyHandle.DuplicateHandle() メソッドが変更されました。 渡されるハンドルの外部の変更は、これらのクラスのインスタンスに保存されているハンドルにも影響するようになりました。

以前の動作

DuplicateHandle() により、新しい EVP_PKEY インスタンスが作成されました。 複製されたキー (つまり、OpenSSL API への直接呼び出しによる) の変更は、元のキーには影響しませんでした。 SafeEvpPKeyHandle.DuplicateHandle は、SafeEvpPKeyHandle を受け取る ECDsaOpenSslRSAOpenSsl のコンストラクターによって呼び出されました。

新しい動作

DuplicateHandle() は、既存の EVP_PKEY の参照カウントをインクリメントし、同じキーへのハンドルを返します。 つまり、EVP_PKEY を変更する OpenSSL API の外部の呼び出しは、重複した SafeEvpPKeyHandle のインスタンスにも影響するようになりました。 これらの API には、このようなハンドルから作成された ECDsaOpenSslRSAOpenSsl インスタンスが含まれます。

導入されたバージョン

.NET 9 Preview 7

破壊的変更の種類

この変更は、動作変更です。

変更理由

この変更が加えられたのは、OpenSSL プロバイダーのサポートを有効にするためです。 副作用として、パフォーマンスも向上します。

.NET API に渡される EVP_PKEY の変更は避けてください。 EVP_PKEY の変更を避けられない場合は、EVP_PKEY のコピーをご自分で作成してください (つまり、パラメーターを新しい EVP_PKEY インスタンスにコピーしてください)。

影響を受ける API

SafeEvpPKeyHandle から生成された RSA または ECDsa インスタンスを受け入れるすべての API も影響を受けます。