SafeEvpPKeyHandle.DuplicateHandle référence la poignée
Outre le fonctionnement permettant d’activer le support des fournisseurs OpenSSL, un changement a été apporté à la méthode SafeEvpPKeyHandle.DuplicateHandle() qui affecte les constructeurs ECDsaOpenSsl et RSAOpenSsl qui prennent une poignée SafeEvpPKeyHandle. Les modifications externes de la poignée transmise affectent également désormais la poignée stockée dans les instances de ces classes.
Comportement précédent
DuplicateHandle() a créé une instance EVP_PKEY
. Les modifications apportées à la clé dupliquée (à savoir, via des appels directs aux API OpenSSL) n’affectent pas la clé d’origine. SafeEvpPKeyHandle.DuplicateHandle
a été appelée par les constructeurs de ECDsaOpenSsl et RSAOpenSsl qui prennent une poignée SafeEvpPKeyHandle.
Nouveau comportement
DuplicateHandle() incrémente le nombre de références de la poignée EVP_PKEY
existante et renvoie une poignée à la même clé. Cela signifie que les appels externes à des API OpenSSL qui modifient EVP_PKEY
affectent également désormais les instances de la poignée SafeEvpPKeyHandle dupliquée. Ces API incluent des instances ECDsaOpenSsl et RSAOpenSsl créées à partir de ces poignées.
Version introduite
.NET 9 Préversion 7
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Ce changement a été apporté pour activer la prise en charge des fournisseurs OpenSSL. En tant qu’effet secondaire, il existe également des améliorations des performances.
Action recommandée
Évitez les modifications de EVP_PKEY
transmises dans les API .NET. Si vous ne pouvez pas éviter les modifications à EVP_PKEY
, créez une copie de EVP_PKEY
vous-même (à savoir, copiez les paramètres dans la nouvelle instance EVP_PKEY
).
API affectées
- System.Security.Cryptography.SafeEvpPKeyHandle.DuplicateHandle()
- ECDsaOpenSsl(SafeEvpPKeyHandle)
- RSAOpenSsl(SafeEvpPKeyHandle)
Chaque API acceptant une instance RSA ou ECDsa provenant de SafeEvpPKeyHandle est également affectée.