Example #1
0
        public IActionResult SignDataFile()
        {
            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);

                string thumbprint = form["thumbprint"];

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

                // Подписываем данные
                var sign = provider.Sign(stream.ToArray(), thumbprint);

                return(Ok(sign));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Ошибка при выполнении запроса: {ex.Message}."));
            }
        }
        /// <summary>
        /// Метод выполнения тестов подписи данных
        /// </summary>
        /// <param name="csp"></param>
        /// <param name="directory"></param>
        /// <param name="thumbprint"></param>
        private void SignDataExecuteTest(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 sign = provider.Sign(data, thumbprint);

                Assert.IsNotNull(sign);
                Assert.IsTrue(sign.Length > 0);

                X509Certificate2 cert = null;

                bool isVerify = provider.VerifyDetachedMessage(sign, data, false, ref cert);

                Assert.IsTrue(isVerify);
                Assert.IsNotNull(cert);
            }
        }