Sdílet prostřednictvím


CoseSigner.Key teď může mít hodnotu null.

V .NET 10 CoseSigner.Key , vlastnost může nyní vrátit null. Pokud CoseSigner je zajištěn klíč RSA nebo ECDSA, CoseSigner.Key vrátí nenulový klíč. Pokud CoseSigner je však podporován klíčem, který není odvozen od AsymmetricAlgorithm, například MLDsa (nový podpisový algoritmus PQC (Post-Quantum Cryptography), CoseSigner.Key vrátí null.

Verze byla představena

.NET 10

Předchozí chování

CoseSigner.Key Dříve to nebylo možné null. Měl typ AsymmetricAlgorithm.

Nové chování

Od verze .NET 10 CoseSigner.Key může být null. Jeho typ je 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.

Typ zásadní změny

Jedná se o změnu chování , ale může také ovlivnit kompatibilitu zdroje.

Důvod změny

Díky zavedení nových podpisových algoritmů, jako je ML-DSA, se rozhraní .NET odpojilo od použití AsymmetricAlgorithm jako univerzální základní třídy pro všechny asymetrické algoritmy. CoseSigner Podobně lze nyní vytvořit pomocí klíče, který není odvozen od AsymmetricAlgorithm. V tomto případě CoseSigner.Key nemůže vrátit reprezentaci základního AsymmetricAlgorithm klíče, a proto se vrátí null místo toho.

Je stále v pořádku použít CoseSigner.Key , ale nezapomeňte zpracovat null hodnoty.

Ovlivněná rozhraní API