Imenski prostor: WvdS.System.Security.Cryptography.Providers
Kriptografski ponudnik na osnovi JavaScript Interop za Blazor WebAssembly. Komunicira preko IJSRuntime z openssl.wasm.
WasmCryptoProvider omogoča post-kvantno kriptografijo v aplikacijah Blazor WebAssembly z:
NativeCryptoProviderBlazor WebAssembly
|
v
+-----------------+
| WasmCrypto- |
| Provider |
| (C#) |
+--------+--------+
| IJSRuntime.InvokeAsync
v
+-----------------+
| wvds-crypto.js |
| (JavaScript) |
+--------+--------+
|
v
+-----------------+
| openssl.wasm |
| (WebAssembly) |
+-----------------+
| Lastnost | Tip | Opis |
|---|---|---|
Name | string | "WASM (JS Interop)" |
IsAvailable | bool | true, ko je inicializiran |
// Program.cs (Blazor WebAssembly) builder.Services.AddScoped<ICryptoProvider>(sp => new WasmCryptoProvider(sp.GetRequiredService<IJSRuntime>()));
@inject ICryptoProvider CryptoProvider @code { protected override async Task OnInitializedAsync() { await CryptoProvider.InitializeAsync(); if (CryptoProvider.IsAvailable) { var version = CryptoProvider.GetOpenSslVersion(); Console.WriteLine($"OpenSSL WASM: {version}"); } } }
V wwwroot/index.html:
<head> <!-- OpenSSL WASM Module --> <script src="_content/WvdS.Crypto/openssl.js"></script> <!-- WvdS Crypto Wrapper --> <script src="_content/WvdS.Crypto/wvds-crypto.js"></script> </head>
Metode so identične kot pri NativeCryptoProvider:
// ML-KEM var (publicKey, privateKey) = await provider.GenerateMlKemKeyPairAsync("ML-KEM-768"); var (sharedSecret, ciphertext) = await provider.EncapsulateAsync(recipientPublicKey); byte[] sharedSecret = await provider.DecapsulateAsync(ciphertext, privateKey); // ML-DSA var (sigPub, sigPriv) = await provider.GenerateMlDsaKeyPairAsync("ML-DSA-65"); byte[] signature = await provider.SignMlDsaAsync(data, sigPriv); bool isValid = await provider.VerifyMlDsaAsync(data, signature, sigPub);
| Metoda | Opis |
|---|---|
Pbkdf2Async | PBKDF2 preko Web Crypto API |
Pbkdf2WithPqSaltAsync | PBKDF2 s PQ-ojačano soljo |
Argon2idAsync | KDF, odporen na pomnilnik, preko OpenSSL WASM |
HkdfDeriveKeyAsync | HKDF Extract + Expand |
DeriveHybridKeyAsync | Kombinira klasično + PQ skrivnost |
| Metoda | Opis |
|---|---|
EncryptChunkedAsync | Šifriranje AES-GCM po kosih |
DecryptChunkedAsync | Dešifriranje AES-GCM po kosih |
EncryptStreamWithPqKeyAsync | ML-KEM + šifriranje po kosih |
DecryptStreamWithPqKeyAsync | ML-KEM + dešifriranje po kosih |
| Metoda | Opis |
|---|---|
RandomBytesAsync | Kriptografsko varna naključna števila preko Web Crypto API |
CreateHybridSignatureAsync | Ustvari hibridni podpis |
DeriveTls13KeysAsync | Razpored ključev TLS 1.3 |
openssl.wasm in wvds-crypto.js morata biti pravilno naloženaNajboljše prakse za kriptografijo v brskalniku:
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional