Delen via


CoseSigner.Key kan nu null zijn

In .NET 10 kan de CoseSigner.Key eigenschap nu null retourneren. Als CoseSigner wordt ondersteund door een RSA- of ECDSA-sleutel, retourneert CoseSigner.Key een niet-null sleutel. Wanneer CoseSigner wordt ondersteund door een sleutel die niet is afgeleid van AsymmetricAlgorithm, zoals MLDsa (een nieuw Post-Quantum Cryptography (PQC) ondertekeningsalgoritme), retourneert CoseSigner.Keynull.

Geïntroduceerde versie

.NET 10

Vorig gedrag

CoseSigner.Key Voorheen kon het niet zijnnull. Het had type AsymmetricAlgorithm.

Nieuw gedrag

Vanaf .NET 10 kan CoseSigner.Keynull zijn. Het type is 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 van brekende verandering

Dit is een gedragswijziging , maar dit kan ook van invloed zijn op de broncompatibiliteit.

Reden voor wijziging

Met de introductie van nieuwe ondertekeningsalgoritmen zoals ML-DSA, is .NET afgestapt van het gebruik van AsymmetricAlgorithm als de universele basisklasse voor alle asymmetrische algoritmen. ** Evenzo kan CoseSigner nu met een sleutel worden gecreëerd die niet is afgeleid van AsymmetricAlgorithm. In dit geval kan er geen CoseSigner.Key worden geretourneerd die de onderliggende sleutel vertegenwoordigt, en daarom wordt AsymmetricAlgorithm geretourneerd.

Het is nog steeds prima om CoseSigner.Key te gebruiken, maar zorg ervoor dat je null waarden goed verwerkt.

Betreffende API's