Vključitev OpenSSL
Vaša aplikacija naj ob zagonu naloži določeno namestitev OpenSSL in vklopi postkvantni način ali pa se, če to ne uspe, ustavi z razumljivim sporočilom.
Pregled rešitve
| Element | Namen |
|---|---|
PostQuantumConfig.OpenSslPath | mapa, iz katere knjižnica naloži libcrypto |
CryptoProviderFactory.RegisterProvider | izrecno registrira ponudnika; brez klica knjižnica ponudnika za OpenSSL registrira sama |
PostQuantumConfig.EnablePostQuantum | naloži OpenSSL, preveri, ali ponuja ML-DSA-65 in ML-KEM-768, in nastavi DefaultMode |
PostQuantumConfig.InitializationError | sporočilo zadnjega neuspelega poskusa nalaganja |
Izvedba
To kodo izvedite enkrat ob zagonu aplikacije, pred prvo kriptografsko operacijo:
using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using WKL.System.Security.Cryptography; using WKL.System.Security.Cryptography.X509Certificates; PostQuantumConfig.OpenSslPath = @"C:\OpenSSL\bin"; try { PostQuantumConfig.EnablePostQuantum(CryptoMode.Hybrid); } catch (CryptographicException ex) { Console.Error.WriteLine($"Postkvantni način ni na voljo: {ex.Message}"); throw; }
Knjižnica datoteko izbere glede na operacijski sistem in arhitekturo procesa:
| Platforma | Datoteka |
|---|---|
| Windows, 64-bitni | libcrypto-3-x64.dll |
| Windows, 32-bitni | libcrypto-3.dll |
| Windows na ARM | libcrypto-3-arm64.dll |
| Linux | libcrypto.so.3 |
| macOS | libcrypto.3.dylib |
Brez OpenSslPath velja iskanje knjižnic operacijskega sistema. To zadošča, če prva datoteka, ki jo to
iskanje najde, pripada OpenSSL 3.5 ali novejšemu. V sistemu Windows OpenSslPath nastavite vedno.
Opombe
- Ponudnik. Ponudnika, ki postopke PQ izračuna prek OpenSSL, knjižnica ob prvi potrebi registrira sama, če je sklop
WKL.System.Security.Cryptography.Extensionsdel aplikacije.CryptoProviderFactory.RegisterProviderpotrebujete samo za drugega ponudnika, na primer ponudnika WebAssembly v Blazor WebAssembly. - Linux: OpenSSL, ki ga naloži .NET.
OpenSslPathvelja samo za klice te knjižnice.X509Chainin uvoz PFX v .NET v sistemu Linux sama naložita sistemskolibcrypto. Če je to različica brez ML-DSA, na primer OpenSSL 3.0 v Ubuntu 24.04, gradnja verige s čistim izdajateljem ML-DSA ne uspe. V tem primeru naj tudi .NET naloži namestitev 3.5 ali novejšo: pred zagonom procesa nastaviteLD_LIBRARY_PATHna njeno mapo s knjižnicami. Hibridnih potrdil s ključem RSA ali ECDSA to ne zadeva. - Več kopij OpenSSL v sistemu Windows. Git, odjemalci VPN in drugi programi prinesejo lastne, pogosto starejše datoteke OpenSSL. Iskanje v sistemu Windows vzame prvo, ki jo najde.
OpenSslPathnamestitev določi enoznačno. - Enkrat na proces. Knjižnica OpenSSL naloži ob prvi uporabi in to izbiro obdrži do konca procesa. Če
OpenSslPathpozneje nastavite na drugo vrednost, naslednja operacija sprožiCryptographicException, namesto da bi novo vrednost tiho prezrla. - Sporočila o napakah navedejo pot in različico. Če mapa ali datoteka manjka,
EnablePostQuantumsprožiCryptographicException, ki navede pot. Če naložena namestitev ne ponuja ML-DSA-65 ali ML-KEM-768, sporočilo navede postopek, različico in pot.DefaultModev obeh primerih ostane nespremenjen. Za odpravo glejte OpenSSL se ne naloži in OpenSSL ne ponuja ML-DSA ali ML-KEM. - Pot iz konfiguracije. V aplikacijah s konfiguracijsko datoteko pot preberite iz konfiguracije, da vsako okolje navede svojo namestitev, ne da bi morali aplikacijo znova prevesti.
Sorodne teme
sl/wiki/pqcrypt/lib/how-to/configure-openssl.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille