Partilhar via


SafeEvpPKeyHandle.DuplicateHandle up-refs o identificador

Junto com o trabalho para habilitar o SafeEvpPKeyHandle.DuplicateHandle() suporte a provedores OpenSSL, uma alteração foi feita no método que afeta os ECDsaOpenSsl construtores e RSAOpenSsl construtores que usam um SafeEvpPKeyHandlearquivo . Modificações externas do identificador passado agora também afetam o identificador armazenado em instâncias dessas classes.

Comportamento anterior

DuplicateHandle() criou uma nova EVP_PKEY instância. As modificações na chave duplicada (ou seja, através de chamadas diretas para APIs OpenSSL) não afetaram a chave original. SafeEvpPKeyHandle.DuplicateHandle foi chamado pelos construtores de ECDsaOpenSsl e RSAOpenSsl que tomam um SafeEvpPKeyHandle.

Novo comportamento

DuplicateHandle() incrementa a contagem de referência do existente EVP_PKEY e retorna um identificador para a mesma chave. Isso significa que chamadas externas para APIs OpenSSL que modificam EVP_PKEY agora também afetam instâncias do arquivo .SafeEvpPKeyHandle Essas APIs incluem ECDsaOpenSsl instâncias criadas RSAOpenSsl a partir desses identificadores.

Versão introduzida

.NET 9 Visualização 7

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

Essa alteração foi feita para habilitar o suporte a provedores OpenSSL. Como efeito colateral, há também algumas melhorias de desempenho.

Evite modificações de passado para APIs . EVP_PKEY NET. Se você não puder evitar modificações no EVP_PKEY, crie uma cópia de EVP_PKEY si mesmo (ou seja, copie parâmetros para a nova EVP_PKEY instância).

APIs afetadas

Todas as APIs que aceitam uma ou ECDsa instância RSA originária também SafeEvpPKeyHandle são afetadas.