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
Createiz 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č je | Dodelite z |
|---|---|
v datoteki PFX iz ExportPfx | X509Certificate2ExportExtensions.ImportPfx namesto konstruktorja .NET |
| v datoteki ključa ob shrambi potrdil | X509Store.Find(findType, findValue, validOnly, restorePqKeys: true) ali X509StoreExtensions.RestorePqKeys |
kot MLDsaKey v procesu, hibridno potrdilo | certificate.AttachAlternativePrivateMLDsaKey(key) |
kot MLDsaKey v procesu, čisto potrdilo ML-DSA | certificate.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.