Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Odpravljanje težav » Zasebni ključ ML-DSA manjka

Zasebni ključ ML-DSA manjka

Klic s CryptoMode.Hybrid ali CryptoMode.PostQuantum sproži CryptographicException z enim od teh sporočil:

The ML-DSA private key of issuer 'CN=Vzorec Hybrid CA' is not available.
No ML-DSA private key is available for signer 'CN=Vzorec Računovodstvo'; Hybrid signing requires one.
A PQ export was requested, but no ML-DSA private key is available for any certificate.
No ML-DSA key pair is available for 'CN=www.example.com'; a PQ store operation needs one.

Ali pa GetAlternativePrivateMLDsaKey oziroma GetPrivateMLDsaKey vrne null.

Okolje

Vsa ciljna okolja. Zadeva operacije, ki podpisujejo z zasebnim ključem ML-DSA potrdila: izdajanje potrdil in seznamov preklicanih potrdil, podpisovanje sporočil CMS, izvoz datotek PFX s ključem PQ in shranjevanje datotek ključev.

Vzrok

X509Certificate2 iz .NET ključa ML-DSA ne nosi. Knjižnica ga hrani v tabeli procesa, v kateri potrdilo najde svoj vnos prek prstnega odtisa. Vnos manjka v teh primerih:

  • Potrdilo je bilo izdano v drugem procesu in naloženo kot datoteka PEM ali DER. Take datoteke zasebnega ključa ne vsebujejo.
  • Potrdilo je bilo uvoženo z new X509Certificate2(pfx, password) iz .NET. Ta pot ključ PQ v datoteki PFX preskoči.
  • Čisto potrdilo ML-DSA je bilo izdano s Create iz zahtevka. Sprva pozna samo javni ključ.
  • Proces je bil znova zagnan. Tabela živi samo toliko kot proces.

Rešitev

Ključ dodelite, preden pokličete operacijo. Pot je odvisna od tega, kje je ključ:

Ključ jeDodelite z
v datoteki PFX iz ExportPfxX509Certificate2ExportExtensions.ImportPfx namesto konstruktorja .NET
v datoteki ključa ob shrambi potrdilX509Store.Find(findType, findValue, validOnly, restorePqKeys: true) ali X509StoreExtensions.RestorePqKeys
kot MLDsaKey v procesu, hibridno potrdilocertificate.AttachAlternativePrivateMLDsaKey(key)
kot MLDsaKey v procesu, čisto potrdilo ML-DSAcertificate.AttachPrivateMLDsaKey(key)

Nato z GetAlternativePrivateMLDsaKey oziroma GetPrivateMLDsaKey preverite, da je ključ na voljo. HasPrivateKey iz .NET kaže samo klasični ključ. Podrobnosti: Ključi in njihova hramba.

sl/wiki/pqcrypt/lib/troubleshooting/no-ml-dsa-private-key.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille