====== ICryptoProvider Interface ====== Defines the interface for post-quantum crypto backends. ---- ===== Definition ===== namespace WvdS.System.Security.Cryptography.Providers public interface ICryptoProvider ---- ===== Properties ===== ^ Name ^ Type ^ Description ^ | Name | string | Name of the provider (e.g., "Native (P/Invoke)") | | IsAvailable | bool | True if provider is initialized and available | ---- ===== Methods ===== ==== Initialization ==== ^ Name ^ Description ^ | InitializeAsync() | Initializes the provider asynchronously | | GetOpenSslVersion() | Returns the OpenSSL version | ==== ML-DSA (Signatures) ==== ^ Name ^ Description ^ | GenerateMlDsaKeyPairAsync(string) | Generates ML-DSA key pair | | SignMlDsaAsync(byte[], byte[]) | Signs data with ML-DSA | | VerifyMlDsaAsync(byte[], byte[], byte[]) | Verifies ML-DSA signature | ==== ML-KEM (Key Exchange) ==== ^ Name ^ Description ^ | GenerateMlKemKeyPairAsync(string) | Generates ML-KEM key pair | | EncapsulateAsync(byte[]) | Encapsulates shared secret | | DecapsulateAsync(byte[], byte[]) | Extracts shared secret | ==== Certificates ==== ^ Name ^ Description ^ | CreateEphemeralCertificateAsync(string, TimeSpan, byte[]) | Creates ephemeral PQ certificate | | SignCertificateAsync(byte[], byte[]) | Signs TBS certificate with ML-DSA | ---- ===== Notes ===== Use ''CryptoProviderFactory.GetProvider()'' instead of direct instantiation. ---- ===== Implementations ===== * [[.:nativecryptoprovider|NativeCryptoProvider]] - Desktop/Server * [[.:wasmcryptoprovider|WasmCryptoProvider]] - Blazor WebAssembly ---- ===== See Also ===== * [[.:start|Providers Namespace]] * [[.:cryptoproviderfactory|CryptoProviderFactory]] {{tag>interface}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//