====== Providers Namespace ======
**Namespace:** ''WvdS.System.Security.Cryptography.Providers''
Contains crypto providers for different runtime environments.
----
===== Interfaces =====
^ Interface ^ Description ^
| [[.:icryptoprovider|ICryptoProvider]] | Defines the interface for crypto backends |
----
===== Classes =====
^ Class ^ Description ^
| CryptoProviderFactory | Factory for obtaining platform-specific provider |
| [[.:nativecryptoprovider|NativeCryptoProvider]] | Provider for desktop/server (P/Invoke to OpenSSL) |
| [[.:wasmcryptoprovider|WasmCryptoProvider]] | Provider for Blazor WebAssembly (JavaScript Interop) |
----
===== Architecture =====
+-------------------------------------+
| ICryptoProvider |
| (GenerateMlDsaKeyPair, Sign, ...) |
+---------------+---------------------+
|
+-------+-------+
v v
+---------------+ +---------------+
| Native | | WASM |
| Provider | | Provider |
| (P/Invoke) | | (JS Interop) |
+---------------+ +---------------+
| |
v v
OpenSSL 3.6 openssl.wasm
----
===== Remarks =====
The ''CryptoProviderFactory'' automatically detects the runtime environment:
* **Desktop/Server/Blazor Server:** ''NativeCryptoProvider''
* **Blazor WebAssembly:** ''WasmCryptoProvider''
// Automatic provider selection
var provider = CryptoProviderFactory.GetProvider();
await provider.InitializeAsync();
----
===== See Also =====
* [[..:cryptoconfig|CryptoConfig Class]]
* [[..:start|API Overview]]
{{tag>namespace providers}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//