public async Task <IActionResult> Download([FromHeader] string encryptedOperationId, [FromHeader] string nodeId) { try { byte[] encryptedRequestData = Convert.FromBase64String(encryptedOperationId); var nodeConnection = connectionsService.GetNodeConnection(Convert.ToInt64(nodeId)); if (nodeConnection != null) { byte[] decryptedData = Encryptor.SymmetricDataDecrypt( encryptedRequestData, nodeConnection.SignPublicKey, nodeConnection.SymmetricKey, NodeData.Instance.NodeKeys.Password).DecryptedData; string operationId = Encoding.UTF8.GetString(decryptedData); if (!string.IsNullOrWhiteSpace(operationId)) { long userId = await changeNodeOperationsService.GetOperationUserIdAsync(operationId, nodeConnection.Node.Id).ConfigureAwait(false); UserDto userInfo = await loadUsersService.GetAllUserDataAsync(userId).ConfigureAwait(false); byte[] encryptedData = Encryptor.SymmetricDataEncrypt( ObjectSerializer.ObjectToByteArray(userInfo), NodeData.Instance.NodeKeys.SignPrivateKey, nodeConnection.SymmetricKey, ObjectsLibrary.Enums.MessageDataType.Binary, NodeData.Instance.NodeKeys.Password); return(File(encryptedData, MediaTypeNames.Application.Octet)); } } return(StatusCode(StatusCodes.Status400BadRequest, "OperationId header is missed.")); } catch (CryptographicException) { return(StatusCode(StatusCodes.Status403Forbidden)); } catch (ArgumentException ex) { Logger.WriteLog(ex); return(StatusCode(StatusCodes.Status400BadRequest)); } catch (Exception ex) { Logger.WriteLog(ex); return(StatusCode(StatusCodes.Status500InternalServerError)); } }