Partager via


CoseSigner.Key peut désormais être null

Dans .NET 10, la CoseSigner.Key propriété peut maintenant retourner null. Si CoseSigner est sauvegardé par une clé RSA ou ECDSA, CoseSigner.Key retourne une clé non nulle. Toutefois, lorsque CoseSigner est soutenu par une clé qui ne dérive pas de AsymmetricAlgorithm, comme MLDsa (un nouvel algorithme de signature de cryptographie post-quantique (PQC)), CoseSigner.Key retourne null.

Version introduite

.NET 10

Comportement précédent

Auparavant, il n'était pas possible de CoseSigner.Keynull. Il avait le type AsymmetricAlgorithm.

Nouveau comportement

À compter de .NET 10, CoseSigner.Key peut être null. Son type est 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.

Type de changement cassant

Il s’agit d’un changement comportemental , mais il peut également affecter la compatibilité de la source.

Raison de la modification

Avec l’introduction de nouveaux algorithmes de signature tels que ML-DSA, .NET s’est éloigné de l’utilisation AsymmetricAlgorithm comme classe de base universelle pour tous les algorithmes asymétriques. De même, CoseSigner peut maintenant être construit avec une clé qui ne dérive pas de AsymmetricAlgorithm. Dans ce cas, CoseSigner.Key ne peut pas renvoyer un AsymmetricAlgorithm représentant la clé sous-jacente et renvoie donc null à la place.

Il est toujours acceptable d’utiliser CoseSigner.Key , mais veillez à gérer les null valeurs.

API affectées