Compartilhar via


CoseSigner.Key agora pode ser nulo

No .NET 10, a CoseSigner.Key propriedade agora pode retornar null. Se CoseSigner for apoiado por uma chave RSA ou ECDSA, retornará CoseSigner.Key uma chave não nula. No entanto, quando CoseSigner é apoiado por uma chave que não deriva de AsymmetricAlgorithm, como MLDsa (um novo algoritmo de assinatura PQC (Criptografia Pós-Quantum), CoseSigner.Key retorna null.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, CoseSigner.Key não podia ser null. Tinha tipo AsymmetricAlgorithm.

Novo comportamento

A partir do .NET 10, CoseSigner.Key pode ser null. Seu tipo é AsymmetricAlgorithm?.

using RSA rsaKey = RSA.Create();

CoseSigner signer = new CoseSigner(rsaKey, RSASignaturePadding.Pss, HashAlgorithmName.SHA512);
// signer.Key is rsaKey here.

// CoseKey is a new abstraction for all keys used in COSE.
CoseKey coseKey = new CoseKey(rsaKey, RSASignaturePadding.Pss, HashAlgorithmName.SHA512);
signer = new CoseSigner(coseKey);
// signer.Key is rsaKey here.

using MLDsa mldsa = MLDsa.GenerateKey(MLDsaAlgorithm.MLDsa44);

coseKey = new CoseKey(mldsa);
signer = new CoseSigner(coseKey);
// signer.Key is null here.

Tipo de mudança disruptiva

Essa é uma alteração comportamental, mas também pode afetar a compatibilidade do código-fonte.

Motivo da alteração

Com a introdução de novos algoritmos de assinatura, como ML-DSA, o .NET se afastou do uso AsymmetricAlgorithm como a classe base universal para todos os algoritmos assimétricos. Da mesma forma, CoseSigner agora pode ser construído com uma chave que não deriva de AsymmetricAlgorithm. Nesse caso CoseSigner.Key , não é possível retornar uma AsymmetricAlgorithm chave subjacente e, portanto, retorna null .

Ainda não há problema em usar CoseSigner.Key , mas certifique-se de lidar com null valores.

APIs afetadas