CryptoConfig Class

Static configuration class for global PQ crypto settings.


Definition

namespace WvdS.System.Security.Cryptography
 
public static class CryptoConfig

Properties

Name Type Description
DefaultMode CryptoMode Global crypto mode for all operations. Default: CryptoMode.Classic
OpenSslPath string? Optional path to OpenSSL 3.6 library

DefaultMode Property

Gets or sets the global crypto mode.

public static CryptoMode DefaultMode { get; set; }
Type CryptoMode
Default Value CryptoMode.Classic

This property determines the default behavior of all extension methods when no explicit CryptoMode is passed.

Value Behavior
Classic No PQ extensions
Hybrid RSA/ECDSA + ML-DSA
PostQuantum ML-DSA/ML-KEM only

Example:

// At application startup
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
 
// All subsequent operations use Hybrid
var cert = request.CreateSelfSigned(notBefore, notAfter);
// cert.HasPqSignature() == true

OpenSslPath Property

Gets or sets the path to the OpenSSL library.

public static string? OpenSslPath { get; set; }
Type string?
Default Value null (automatic search)

When null, the library automatically searches for OpenSSL:

Platform Search Paths
Windows x64 libcrypto-3-x64.dll in application directory, PATH
Linux libcrypto.so.3 in LD_LIBRARY_PATH, /usr/lib
macOS libcrypto.3.dylib in DYLD_LIBRARY_PATH, /opt/homebrew/lib

OpenSSL 3.6.0 or higher is required for ML-DSA and ML-KEM support.

Platform Examples:

// Windows
CryptoConfig.OpenSslPath = @"C:\OpenSSL-3.6\bin\libcrypto-3-x64.dll";
 
// Linux
CryptoConfig.OpenSslPath = "/opt/openssl-3.6/lib64/libcrypto.so.3";
 
// macOS
CryptoConfig.OpenSslPath = "/opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib";

Methods

Name Description
EnablePostQuantum(CryptoMode) Enables PQ cryptography and initializes OpenSSL

EnablePostQuantum Method

Enables post-quantum cryptography and initializes the OpenSSL interop.

public static void EnablePostQuantum(CryptoMode mode = CryptoMode.Hybrid)

Parameters:

Name Type Description
mode CryptoMode The mode to enable. Default: CryptoMode.Hybrid

This method is a convenience function that:

  1. Sets DefaultMode to the specified value
  2. Initializes OpenSSL and checks the version
  3. Loads the crypto provider

Equivalent to:

CryptoConfig.DefaultMode = mode;
CryptoProviderFactory.GetProvider().Initialize();

Examples:

// Enables Hybrid mode (default)
CryptoConfig.EnablePostQuantum();
 
// Only for fully PQ-capable environments
CryptoConfig.EnablePostQuantum(CryptoMode.PostQuantum);

Exceptions:

DllNotFoundException OpenSSL library not found
InvalidOperationException OpenSSL version < 3.6 or PQ algorithms not available

Thread Safety

Changes to DefaultMode and OpenSslPath are thread-safe. Ideally, change these values only at application startup.


Remarks

CryptoConfig is the central configuration point for the entire library. Settings apply globally to all threads.

// Recommended initialization in Program.cs or Startup
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
CryptoConfig.OpenSslPath = @"C:\OpenSSL\bin\libcrypto-3-x64.dll";

See Also


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: on 2026/01/29 at 11:14 PM