====== 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//