Compartilhar via


Os parâmetros de chave X509Certificate e PublicKey podem ser nulos

O comportamento de X509Certificate e PublicKey foi alterado. Quando esses objetos contêm uma chave sem parâmetros de algoritmo, eles agora retornam null em vez de uma matriz vazia.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, X509Certificate ou PublicKey objetos que continham uma chave sem parâmetros de algoritmo retornavam uma matriz vazia ao acessar os parâmetros de algoritmo de chave.

byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters would be an empty array if no algorithm parameters were present

Novo comportamento

A partir do .NET 10, objetos X509Certificate ou PublicKey que contêm uma chave sem parâmetros de algoritmo retornam null ao acessar os parâmetros do algoritmo de chave.

byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters will be null if no algorithm parameters are present

Tipo de mudança disruptiva

Essa é uma alteração comportamental e de compatibilidade de origem.

Motivo da alteração

As X509Certificate, X509Certificate2 e PublicKey classes expõem informações sobre o Subject Public Key Info. Uma das propriedades das Informações de chave pública do assunto são os parâmetros do algoritmo. Uma informação de chave pública de assunto não é necessária para conter parâmetros de algoritmo. Anteriormente, isso era representado como uma matriz de bytes vazia, o que não é válido em ASN.1. Tentar codificar ou decodificá-lo resultaria em uma exceção. Para representar mais claramente parâmetros de chave ausentes, null agora é retornado e os membros que retornam parâmetros de algoritmo foram anotados para retornar valores anuláveis.

Ao acessar um membro que retorna informações sobre os parâmetros de algoritmo de informações de chave pública de um assunto, espere que o membro possivelmente retorne null e manipule o valor null adequadamente.

byte[] parameters = certificate.GetKeyAlgorithmParameters();
if (parameters == null)
{
    // Handle the absence of algorithm parameters
}

APIs afetadas