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.
Ação recomendada
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
- System.Security.Cryptography.SafeEvpPKeyHandle.DuplicateHandle()
- ECDsaOpenSsl(SafeEvpPKeyHandle)
- RSAOpenSsl(SafeEvpPKeyHandle)
Todas as APIs que aceitam uma ou ECDsa instância RSA originária também SafeEvpPKeyHandle são afetadas.