Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }