Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Juntamente com o trabalho para habilitar o suporte a provedores OpenSSL, foi feita uma alteração no método SafeEvpPKeyHandle.DuplicateHandle() que afeta os construtores ECDsaOpenSsl e RSAOpenSsl que levam um SafeEvpPKeyHandle. As modificações externas do identificador passado agora também afetam o identificador armazenado em instâncias dessas classes.
Comportamento anterior
DuplicateHandle() criou uma nova instância de EVP_PKEY. As modificações na chave duplicada (ou seja, por meio de chamadas diretas para APIs OpenSSL) não afetaram a chave original.
SafeEvpPKeyHandle.DuplicateHandle foi chamado pelos construtores de ECDsaOpenSsl e RSAOpenSsl que levam um SafeEvpPKeyHandle.
Novo comportamento
DuplicateHandle() incrementa a contagem de referência do EVP_PKEY existente 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 SafeEvpPKeyHandle duplicado. Essas APIs incluem instâncias de ECDsaOpenSsl e RSAOpenSsl criadas com base nesses identificadores.
Versão introduzida
.NET 9 versão prévia 7
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração foi feita para habilitar o suporte a provedores OpenSSL. Como efeito colateral, também há algumas melhorias de desempenho.
Ação recomendada
Evite modificações de EVP_PKEY passadas para APIs do .NET. Se você não puder evitar modificações em EVP_PKEY, crie uma cópia de EVP_PKEY por conta própria (ou seja, copie parâmetros para a nova instância de EVP_PKEY).
APIs afetadas
- System.Security.Cryptography.SafeEvpPKeyHandle.DuplicateHandle()
- ECDsaOpenSsl(SafeEvpPKeyHandle)
- RSAOpenSsl(SafeEvpPKeyHandle)
Todas as APIs que aceitam uma instância RSA ou ECDsa originária de SafeEvpPKeyHandle também são afetadas.