private async Task GetPublicKeyCommandAsync() { try { var encAss = CryptoFactoryF.CreateAsymmetricAlgoritm(ChoosenCrypto.Provider, ChoosenCrypto.Asymmetric); var keyPublic = encAss.Export(false); var resultForClient = new CurrentResult <byte[]>() { OperationWasFinishedSuccessful = true, Result = keyPublic }; await ReturnResultToClientAsync(resultForClient, false).ConfigureAwait(false); AsymmetricDecrypterF = encAss; } catch (Exception ex) { var result = new ResultOfOperation() { ErrorMessage = "Во время выполнения операции получения открытого ключа, возникла непредвиденная ошибка." }; await ReturnResultToClientAsync(result, false).ConfigureAwait(false); } }
private async Task SetPublicKey(Stream stream) { try { AsymmetricEncrypterF = CryptoFactoryF.CreateAsymmetricAlgoritm(ChoosenCrypto.Provider, ChoosenCrypto.Asymmetric); var memStream = new MemoryStream(); await stream.CopyToAsync(memStream).ConfigureAwait(false); AsymmetricEncrypterF.Import(memStream.ToArray()); await ReturnResultToClientAsync(new ResultOfOperation() { OperationWasFinishedSuccessful = true }, false) .ConfigureAwait(false); } catch (ArgumentOutOfRangeException ex) when(Type.GetType(ex.Source, false).IsAssignableFrom(typeof(IAsymmetricEncrypter))) { await SendResultWithError(2, 0, false).ConfigureAwait(false); } catch (CryptographicException ex) { await SendResultWithError(2, 1, false).ConfigureAwait(false); } }