Partilhar via


CoseSigner.Key agora pode ser null

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 de criptografia pós-quântica (PQC)), 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

Esta é uma mudança comportamental , mas também pode afetar a compatibilidade da fonte.

Motivo da mudança

Com a introdução de novos algoritmos de assinatura, como o ML-DSA, O .NET deixou de usar AsymmetricAlgorithm como 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. Neste caso CoseSigner.Key , não pode retornar um AsymmetricAlgorithm representando a chave subjacente e, portanto, retorna null em vez disso.

Ainda é aceitável usar CoseSigner.Key, mas certifique-se de lidar com os valores de null.

APIs afetadas