Freigeben über


CoseSigner.Key kann jetzt null sein

In .NET 10 kann die Eigenschaft CoseSigner.Key jetzt null zurückgeben. Wenn CoseSigner auf einem RSA- oder ECDSA-Schlüssel basiert, gibt CoseSigner.Key einen Nicht-NULL-Schlüssel zurück. Wenn CoseSigner jedoch von einem Schlüssel gesichert wird, der nicht von AsymmetricAlgorithm abgeleitet ist, wie MLDsa (ein neuer Signaturalgorithmus der Post-Quantum-Kryptographie (PQC)), gibt CoseSigner.Keynull zurück.

Eingeführt in Version

.NET 10

Vorheriges Verhalten

CoseSigner.Key konnte zuvor nicht null. Es hatte Typ AsymmetricAlgorithm.

Neues Verhalten

Ab .NET 10 kann CoseSigner.Keynull sein. Der Typ ist 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.

Art der einschneidenden Änderung

Dies ist eine Verhaltensänderung , kann sich aber auch auf die Quellkompatibilität auswirken.

Grund für Änderung

Mit der Einführung neuer Signaturalgorithmen wie ML-DSA hat .NET sich von der Verwendung AsymmetricAlgorithm als universelle Basisklasse für alle asymmetrischen Algorithmen entfernt. Ebenso kann CoseSigner jetzt mit einem Schlüssel erstellt werden, der nicht von AsymmetricAlgorithm abgeleitet ist. In diesem Fall kann CoseSigner.Key kein AsymmetricAlgorithm bereitstellen, das den zugrunde liegenden Schlüssel darstellt, und gibt daher stattdessen null zurück.

Es ist immer noch in Ordnung, CoseSigner.Key zu verwenden, aber achten Sie darauf, null-Werte zu behandeln.

Betroffene APIs