Compartir a través de


CoseSigner.Key ahora puede ser NULL

En .NET 10, la CoseSigner.Key propiedad ahora puede devolver null. Si CoseSigner está respaldado por una clave RSA o ECDSA, CoseSigner.Key devuelve una clave que no es NULL. Sin embargo, cuando CoseSigner está respaldado por una clave que no deriva de AsymmetricAlgorithm, como MLDsa (un nuevo algoritmo de firma de criptografía post-cuántica (PQC), CoseSigner.Key devuelve null.

Versión introducida

.NET 10

Comportamiento anterior

Anteriormente, CoseSigner.Key no podía ser null. Tenía el tipo AsymmetricAlgorithm.

Nuevo comportamiento

A partir de .NET 10, CoseSigner.Key puede ser null. Su tipo es 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 cambio disruptivo

Se trata de un cambio de comportamiento , pero también puede afectar a la compatibilidad de origen.

Motivo del cambio

Con la introducción de nuevos algoritmos de firma como ML-DSA, .NET se ha alejado del uso AsymmetricAlgorithm como clase base universal para todos los algoritmos asimétricos. Del mismo modo, CoseSigner ahora se puede construir con una clave que no deriva de AsymmetricAlgorithm. En este caso CoseSigner.Key , no puede devolver un AsymmetricAlgorithm objeto que represente la clave subyacente y, por tanto, devuelva null en su lugar.

Todavía está bien usar CoseSigner.Key , pero asegúrese de controlar null los valores.

Las APIs afectadas