Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Acción recomendada
Todavía está bien usar CoseSigner.Key , pero asegúrese de controlar null los valores.