public HttpResponseMessage Upload(ImageUploadRequest imageUploadRequest)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var xmlDocumentName = Guid.NewGuid().ToString() + ".xml";

                    var imageUploadSession = new ImageUploadSession()
                    {
                        RequestNumber = imageUploadRequest.RequestNumber,
                        UserName      = imageUploadRequest.UserName,
                        Image         = new Image()
                        {
                            FileName            = imageUploadRequest.ImageName,
                            SignedImageFileName = xmlDocumentName
                        }
                    };

                    var digitalCertificate = _digitalCertificateRepository.Query().FirstOrDefault();

                    ImageCryptographyManager.SignImage(
                        imageUploadRequest.ImageData,
                        //File.ReadAllBytes(HttpContext.Current.Server.MapPath("~/") + "\\" + "Test.png"),
                        digitalCertificate.PrivateKey,
                        Path.Combine(FilePaths.XMLBasePath, xmlDocumentName)
                        );

                    _imageUploadSessionRepository.Add(imageUploadSession);

                    return(new HttpResponseMessage
                    {
                        StatusCode = HttpStatusCode.OK,
                        Content = new StringContent(LanguageConstants.ImageSuccessfullyUploaded)
                    });
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }
            }
            catch
            {
                // If an uncaught exception occurs, return an error response
                // with status code 500 (Internal Server Error)
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, LanguageConstants.InternalServerError));
            }
        }
        public HttpResponseMessage Document(int id)
        {
            try
            {
                var image = _imageRepository.GetImage(id);
                var digitalCertificate = _digitalCertificateRepository.Query().FirstOrDefault();

                var imageData = ImageCryptographyManager.GetImage(Path.Combine(FilePaths.XMLBasePath, image.SignedImageFileName), digitalCertificate.PublicKey);

                return(new HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.OK,
                    Content = new StringContent(Convert.ToBase64String(imageData))
                });
            }
            catch (Exception ex)
            {
                // If an uncaught exception occurs, return an error response
                // with status code 500 (Internal Server Error)
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }