Udostępnij przez


CoseSigner.Key może teraz mieć wartość null

Na platformie .NET 10 CoseSigner.Key właściwość może teraz zwrócić wartość null. Jeśli CoseSigner jest wspierany przez klucz RSA lub ECDSA, zwraca CoseSigner.Key klucz inny niż null. Jednak w przypadku, gdy CoseSigner jest wspierany przez klucz, który nie pochodzi z AsymmetricAlgorithmelementu , na przykład MLDsa (nowy algorytm podpisywania Post-Quantum Cryptography (PQC), CoseSigner.Key zwraca wartość null.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

CoseSigner.Key Wcześniej nie można było mieć wartości null. Miał typ AsymmetricAlgorithm.

Nowe zachowanie

Począwszy od platformy .NET 10, CoseSigner.Key może to być null. Jego typ to 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 zmiany przełamującej

Jest to zmiana behawioralna , ale może również mieć wpływ na zgodność ze źródłem.

Przyczyna zmiany

Wraz z wprowadzeniem nowych algorytmów podpisywania, takich jak ML-DSA, platforma .NET odeszła od użycia AsymmetricAlgorithm jako uniwersalna klasa bazowa dla wszystkich algorytmów asymetrycznych. CoseSigner Podobnie można teraz utworzyć za pomocą klucza, który nie pochodzi z elementu AsymmetricAlgorithm. W tym przypadku CoseSigner.Key nie można zwrócić reprezentującego klucza bazowego AsymmetricAlgorithm , a tym samym zwraca wartość null zamiast tego.

Nadal jest w porządku, aby użyć CoseSigner.Key , ale pamiętaj, aby obsługiwać null wartości.

Interfejsy API, których dotyczy problem