====== Classe CryptoConfig ====== Classe di configurazione statica per le impostazioni globali PQ-Crypto. ---- ===== Definizione ===== namespace WvdS.System.Security.Cryptography public static class CryptoConfig ---- ===== Proprieta ===== ^ Nome ^ Tipo ^ Descrizione ^ | DefaultMode | [[.:cryptomode|CryptoMode]] | Modalita crittografica globale per tutte le operazioni. Default: ''CryptoMode.Classic'' | | OpenSslPath | string? | Percorso opzionale alla libreria OpenSSL 3.6 | ---- ==== Proprieta DefaultMode ==== Ottiene o imposta la modalita crittografica globale. public static CryptoMode DefaultMode { get; set; } | Tipo | [[.:cryptomode|CryptoMode]] | | Valore predefinito | ''CryptoMode.Classic'' | Questa proprieta determina il comportamento predefinito di tutti i metodi extension quando non viene passato un ''CryptoMode'' esplicito. ^ Valore ^ Comportamento ^ | Classic | Nessuna estensione PQ | | Hybrid | RSA/ECDSA + ML-DSA | | PostQuantum | Solo ML-DSA/ML-KEM | **Esempio:** // All'avvio dell'applicazione CryptoConfig.DefaultMode = CryptoMode.Hybrid; // Tutte le operazioni successive usano Hybrid var cert = request.CreateSelfSigned(notBefore, notAfter); // cert.HasPqSignature() == true ---- ==== Proprieta OpenSslPath ==== Ottiene o imposta il percorso alla libreria OpenSSL. public static string? OpenSslPath { get; set; } | Tipo | ''string?'' | | Valore predefinito | ''null'' (ricerca automatica) | Se ''null'', la libreria cerca automaticamente OpenSSL: ^ Piattaforma ^ Percorsi di ricerca ^ | Windows x64 | ''libcrypto-3-x64.dll'' nella directory applicazione, 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 o superiore** e richiesto per il supporto ML-DSA e ML-KEM. **Esempi per piattaforma:** // 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"; ---- ===== Metodi ===== ^ Nome ^ Descrizione ^ | EnablePostQuantum(CryptoMode) | Attiva la crittografia PQ e inizializza OpenSSL | ---- ==== Metodo EnablePostQuantum ==== Attiva la crittografia post-quantum e inizializza l'interop OpenSSL. public static void EnablePostQuantum(CryptoMode mode = CryptoMode.Hybrid) **Parametri:** ^ Nome ^ Tipo ^ Descrizione ^ | mode | [[.:cryptomode|CryptoMode]] | La modalita da attivare. Default: ''CryptoMode.Hybrid'' | Questo metodo e una funzione di convenienza che: - Imposta ''DefaultMode'' al valore specificato - Inizializza OpenSSL e verifica la versione - Carica il Crypto-Provider Equivalente a: CryptoConfig.DefaultMode = mode; CryptoProviderFactory.GetProvider().Initialize(); **Esempi:** // Attiva modalita Hybrid (default) CryptoConfig.EnablePostQuantum(); // Solo per ambienti completamente PQ-ready CryptoConfig.EnablePostQuantum(CryptoMode.PostQuantum); **Eccezioni:** | DllNotFoundException | Libreria OpenSSL non trovata | | InvalidOperationException | Versione OpenSSL < 3.6 o algoritmi PQ non disponibili | ---- ===== Thread Safety ===== Le modifiche a ''DefaultMode'' e ''OpenSslPath'' sono thread-safe. Idealmente, modificare questi valori solo all'avvio dell'applicazione. ---- ===== Note ===== ''CryptoConfig'' e il punto di configurazione centrale per l'intera libreria. Le impostazioni si applicano globalmente a tutti i thread. // Inizializzazione raccomandata in Program.cs o Startup CryptoConfig.DefaultMode = CryptoMode.Hybrid; CryptoConfig.OpenSslPath = @"C:\OpenSSL\bin\libcrypto-3-x64.dll"; ---- ===== Vedi anche ===== * [[.:cryptomode|Enum CryptoMode]] * [[.:providers:start|Namespace Providers]] * [[.:start|Panoramica API]] {{tag>klasse konfiguration static}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//