Как я могу разработать цифровую подпись в веб-приложении
привет всем, я пытаюсь разработать веб-приложение, чтобы иметь возможность подписать pdf-документ, поэтому мне нужна цифровая подпись клиента, чтобы подписать его,я нашел много кода, который описывает, как это сделать, но не что-то понятное для веб-приложения, я хотел бы, чтобы кто-то помог мне, как это сделать, заранее спасибо...
приложил код, который я нашел
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Security; using iTextSharp.text.pdf; using bcrypto = Org.BouncyCastle.X509; using iTextSharp.text.pdf.security; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Net; using System.Net.Http; using System.Web.Routing; namespace WebApplication2.Models { public class Certificado { private X509Certificate2 certificado; private X509Store st = new X509Store(StoreName.My, StoreLocation.CurrentUser); object locationCertificate = @"C:\certificado.cer"; private void Open() { st.Open(OpenFlags.ReadOnly); } private void Close() { st.Close(); } private Org.BouncyCastle.X509.X509Certificate[] get_chain(Org.BouncyCastle.X509.X509CertificateParser cp) { Org.BouncyCastle.X509.X509Certificate[] chain1 = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(certificado.RawData) }; return chain1; } private void getCollection() { // Note: // If we want to use the client cert in an ASP.NET app, we may use something like this instead: // X509Certificate2 cert = new X509Certificate2(Request.ClientCertificate.Certificate); // Get its associated CSP and public key // X509Certificate2 clientCertInRequest = RequestContext.ClientCertificate; X509Certificate2Collection collection = st.Certificates.Find(X509FindType.FindBySubjectName, locationCertificate, false); // X509Certificate2Collection collection = X509Certificate2UI.SelectFromCollection(st.Certificates, "Seleccione su certificado:", "", X509SelectionFlag.SingleSelection); if (collection.Count > 0) { certificado = collection[0]; } } public string documento_firmado() { try { Open(); getCollection(); Close(); Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser(); Org.BouncyCastle.X509.X509Certificate[] chain = get_chain(cp); Firmar firmar = new Firmar(@"C:\doc.pdf", @"C:\nuevo.pdf"); return firmar.firmar_pdf(certificado, chain); } catch (CryptographicException exc) { return exc.ToString(); } catch (Exception exc1) { return exc1.ToString(); } } } }
Dave Kreskowiak
Вы хотите подписать PDF-документ на сервере с помощью сертификата на стороне клиента? Этого не случится. Ваш код вообще не имеет доступа к сертификату клиента.
Все ASP.NET код выполняется полностью на сервере, а не на клиенте.
Member 12179018
Значит, ты считаешь, что это невозможно сделать ?
[no name]
Пожалуйста, обратитесь к ответу по адресу https://stackoverflow.com/a/55676351/9659885
Он указывает на завершение рабочего проекта вместе с исходным кодом.