Es ist kein Kryptografieanbieter registriert
PostQuantumConfig.EnablePostQuantum wirft eine CryptographicException, oder eine Operation mit PQ-Anteil
wirft eine InvalidOperationException:
No ICryptoProvider registered. Call CryptoProviderFactory.RegisterProvider() during startup. No CryptoProvider registered. Call CryptoProviderFactory.RegisterProvider() or CryptoProviderFactory.SetProvider() during application startup. For Blazor WASM, register WasmCryptoProvider. For Server/Desktop, register NativeCryptoProvider.
Umgebung
- Anwendungen, die nur auf
WKL.System.Security.Cryptography.Coreverweisen, nicht aufWKL.System.Security.Cryptography.Extensions. - Blazor WebAssembly ohne Registrierung des WebAssembly-Anbieters.
Ursache
Die PQ-Verfahren rechnet ein Anbieter, der die Schnittstelle ICryptoProvider umsetzt: NativeCryptoProvider
mit OpenSSL oder WasmCryptoProvider im Browser. Ist kein Anbieter registriert, sucht die Bibliothek beim
ersten Bedarf die Assembly WKL.System.Security.Cryptography.Extensions und registriert deren
NativeCryptoProvider. Gehört die Assembly nicht zur Anwendung, bleibt die Registrierung leer. In Blazor
WebAssembly ist das immer so, weil der Anbieter für OpenSSL im Browser nicht läuft.
Lösung
- Server und Desktop: Verweisen Sie auf
WKL.System.Security.Cryptography.Extensions. Prüfen Sie nach dem Veröffentlichen, dassWKL.System.Security.Cryptography.Extensions.dllneben der Anwendung liegt. Eine Registrierung im Code ist dann nicht nötig. - Blazor WebAssembly: Registrieren Sie den WebAssembly-Anbieter beim Start, wie es So verwenden Sie die Bibliothek in Blazor beschreibt.
- Eigener Anbieter: Registrieren Sie ihn mit
CryptoProviderFactory.RegisterProvider(() => …)vor dem Aufruf vonEnablePostQuantum.
de/wiki/pqcrypt/lib/troubleshooting/no-crypto-provider-registered.txt · Last modified: by Wolfgang van der Stille