@using Shared.DTOs
@using System.Text
@inject HttpClient _hc
@inject IJSRuntime JS
@code {
private long maxFileSize = 1024 * 15;
private EditContext? editContext;
[SupplyParameterFromForm]
private CsrPrivateKeyDto? modelTaxTools { get; set; } = new CsrPrivateKeyDto();
private ValidationMessageStore? messageStore;
protected override void OnInitialized()
{
// modelTaxTools ??= new();
// editContext = new(modelTaxTools);
// editContext.OnValidationRequested += HandleValidationRequested;
// messageStore = new(editContext);
editContext = new EditContext(modelTaxTools);
messageStore = new(editContext);
}
// private void HandleValidationRequested(object? sender,
// ValidationRequestedEventArgs args)
// {
// messageStore?.Clear();
// // messageStore?.Add(() => modelTaxTools.Mobile, "Select at least one.");
// }
}
@functions {
private async Task CreateCsrAndPrivateKey()
{
var request = await _hc.PostAsJsonAsync("Base/CreateCsrAndPrivateKey", modelTaxTools);
if (request.IsSuccessStatusCode)
{
var res = await request.Content.ReadFromJsonAsync();
await DownloadFileFromStream(res.Base64csr, $"{modelTaxTools.cn}.{res.typecsr}");
await DownloadFileFromStream(res.Base64key, $"{modelTaxTools.cn}.{res.typekey}");
}
else
{
var error = await request.Content.ReadFromJsonAsync>();
messageStore?.Add(() => modelTaxTools.Mobile, error);
}
}
private async Task ReadPublicKeyFromCER(InputFileChangeEventArgs e)
{
if (e.GetMultipleFiles()[0].Size <= maxFileSize)
{
string Base64Str = "";
using (MemoryStream stream = new MemoryStream())
{
await e.GetMultipleFiles()[0].OpenReadStream(maxFileSize).CopyToAsync(stream);
byte[] Array = stream.ToArray();
Base64Str = Convert.ToBase64String(Array);
}
// if (!string.IsNullOrEmpty(Base64Str))
// {
// var request = await _hc.PostAsJsonAsync("Base/ReadPublicKeyFromCER", Base64Str);
// if (request.IsSuccessStatusCode)
// {
// var res = await request.Content.ReadFromJsonAsync();
// await DownloadFileFromStream(res.PublicKeyBase64, $"{modelTaxTools.cn}.{res.type}");
// }
// }
}
else
{
}
}
private Stream GetFileStream(byte[] bytes)
{
var fileStream = new MemoryStream(bytes);
return fileStream;
}
private async Task DownloadFileFromStream(string Base64, string FileName)
{
byte[] bytes = System.Convert.FromBase64String(Base64);
var fileStream = GetFileStream(bytes);
// var fileName = "log.bin";
using var streamRef = new DotNetStreamReference(stream: fileStream);
await JS.InvokeVoidAsync("downloadFileFromStream", FileName, streamRef);
}
}
2)خواندن کلید عمومی