示例#1
0
        public IActionResult CreateHash()
        {
            try
            {
                if (HttpContext.Request.Form.Files.Count <= 0)
                {
                    return(BadRequest("Файлов для рассчета хэш не обнаружено."));
                }

                var form = HttpContext.Request.Form;
                var file = HttpContext.Request.Form.Files[0];

                var stream = new MemoryStream();
                file.CopyTo(stream);
                stream.Position = 0;

                string thumbprint = form["thumbprint"];

                if (string.IsNullOrEmpty(thumbprint))
                {
                    return(BadRequest("Не удалось получить значение thumbprint для поиска сертификата."));
                }

                // Подписываем данные, необходимо убедиться что значение Stream.Position = 0
                var hash = provider.CreateHash(stream, thumbprint);

                return(Ok(hash));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Ошибка при выполнении запроса: {ex.Message}."));
            }
        }
        /// <summary>
        /// Метод выполнения тестов формирования хэш
        /// </summary>
        /// <param name="csp"></param>
        /// <param name="directory"></param>
        /// <param name="thumbprint"></param>
        private void CreateHashExecuteTest(CspType csp, string directory, string thumbprint)
        {
            SignServiceProvider provider = new SignServiceProvider(csp, new LoggerFactory());
            var files = Utils.GetFilesList(directory);

            foreach (var file in files)
            {
                var data   = Utils.GetStreamFromFile(file);
                var stream = new MemoryStream(data);
                var hash   = provider.CreateHash(stream, thumbprint);

                Assert.IsTrue(!string.IsNullOrEmpty(hash));
            }
        }