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); } }