protected void SubmitButton_Click(object sender, EventArgs e) { // Get an instance of the CadesSignatureFinisher2 class, responsible for completing the signature process var signatureFinisher = new CadesSignatureFinisher2(Util.GetRestPkiClient()) { // Set the token for this signature acquired previously Token = (string)ViewState["Token"] }; // Call the Finish() method, which finalizes the signature process and returns a SignatureResult object var result = signatureFinisher.Finish(); // At this point, you'd typically store the signed PDF on your database. For demonstration purposes, we'll // store the PDF on our mock Storage class. // The SignatureResult object has various methods for writing the signature file to a stream (WriteTo()), local file (WriteToFile()), open // a stream to read the content (OpenRead()) and get its contents (GetContent()). For large files, avoid the method GetContent() to avoid // memory allocation issues. string fileId; using (var resultStream = result.OpenRead()) { fileId = StorageMock.Store(resultStream, ".p7s"); } // If you prefer a simpler approach without streams, simply do: //fileId = StorageMock.Store(result.GetContent(), ".pdf"); // What you do at this point is up to you. For demonstration purposes, we'll render a page with a link to // download the signed PDF and with the signer's certificate details. this.SignatureFilename = fileId; this.SignerCertificate = result.Certificate; Server.Transfer("CadesSignatureInfo.aspx"); }
public ActionResult Index(CadesSignatureModel model) { // Get an instance of the CadesSignatureFinisher2 class, responsible for completing the signature process var signatureFinisher = new CadesSignatureFinisher2(Util.GetRestPkiClient()) { // Set the token for this signature (rendered in a hidden input field, see the view) Token = model.Token }; // Call the Finish() method, which finalizes the signature process and returns a SignatureResult object var signatureResult = signatureFinisher.Finish(); // The "Certificate" property of the SignatureResult object contains information about the certificate used by the user // to sign the file. var signerCert = signatureResult.Certificate; // At this point, you'd typically store the CMS on your database. For demonstration purposes, we'll // store the CMS on the App_Data folder and render a page with a link to download the CMS and with the // signer's certificate details. var appDataPath = Server.MapPath("~/App_Data"); if (!Directory.Exists(appDataPath)) { Directory.CreateDirectory(appDataPath); } var id = Guid.NewGuid(); var filename = id + ".p7s"; // The SignatureResult object has various methods for writing the signature file to a stream (WriteTo()), local file (WriteToFile()), open // a stream to read the content (OpenRead()) and get its contents (GetContent()). For large files, avoid the method GetContent() to avoid // memory allocation issues. signatureResult.WriteToFile(Path.Combine(appDataPath, filename)); return(View("SignatureInfo", new SignatureInfoModel() { File = filename.Replace(".", "_"), // Note: we're passing the filename argument with "." as "_" because of limitations of ASP.NET MVC SignerCertificate = signerCert })); }
protected void SubmitButton_Click(object sender, EventArgs e) { // Get an instance of the CadesSignatureFinisher2 class, responsible for completing the signature process var signatureFinisher = new CadesSignatureFinisher2(Util.GetRestPkiClient()) { // Set the token for this signature acquired previously Token = (string)ViewState["Token"] }; // Call the Finish() method, which finalizes the signature process and returns a SignatureResult object var signatureResult = signatureFinisher.Finish(); // The "Certificate" property of the SignatureResult object contains information about the certificate used by the user // to sign the file. var signerCert = signatureResult.Certificate; // At this point, you'd typically store the CMS on your database. For demonstration purposes, we'll // store the CMS on the App_Data folder and render a page with a link to download the CMS and with the // signer's certificate details. var appDataPath = Server.MapPath("~/App_Data"); if (!Directory.Exists(appDataPath)) { Directory.CreateDirectory(appDataPath); } var id = Guid.NewGuid(); var filename = id + ".p7s"; // The SignatureResult object has various methods for writing the signature file to a stream (WriteTo()), local file (WriteToFile()), open // a stream to read the content (OpenRead()) and get its contents (GetContent()). For large files, avoid the method GetContent() to avoid // memory allocation issues. signatureResult.WriteToFile(Path.Combine(appDataPath, filename)); this.SignatureFilename = filename; this.SignerCertificate = signerCert; Server.Transfer("CadesSignatureInfo.aspx"); }