C#文档上的多重数字签名
本文关键字:数字签名 文档 | 更新日期: 2023-09-27 18:29:04
我在C#.net应用程序中有一个要求,即能够向文档添加多个数字签名。文档将作为模板上传,然后经过几个阶段的处理(邮件合并),然后下载。有一项要求是让几个方面各自对其进行数字签名
我有以下问题
1) 每个人都需要一份单独的证书才能签字。2) 我可以选择在网络服务器上安装office还是购买第三方组件。3) 我非常感谢c#/.net中的任何示例(使用docx或pdf进行演示)
下面我使用DocuSign WebService编写了一段代码,用于发送要由多方签名的文档:您可以从他们的网站获取WebService(.asmx)url,并了解如何将此Service Reference
添加到您的项目中。
你可以从这里获得关于什么是信封或标签的详细信息
Envelope envelope = new Envelope();
envelope.Subject = subject;
envelope.EmailBlurb = "This is Awesome. Kung fu Panda is just awesome";
envelope.AccountId = ConfigurationManager.AppSettings["APIAccountId"];
Recipient recipient = new Recipient();
recipient.UserName = name;
recipient.Email = txtRecipientEmail.Text;
recipient.ID = "1";
recipient.Type = RecipientTypeCode.Signer;
//here you can add multiple recipients
envelope.Recipients = new Recipient[] { recipient };
Document document = new Document();
document.PDFBytes = FileHelper.StreamToByteArray(fileUploadTool1.FileContent );
document.FileExtension = Path.GetExtension(fileUploadTool1.PostedFile.FileName);
document.Name = Path.GetFileName(fileUploadTool1.PostedFile.FileName);
document.ID = "1";
envelope.Documents = new Document[] { document };
Tab tab1 = new Tab();
tab1.RecipientID = "1";
tab1.PageNumber = "1";
tab1.DocumentID = "1";
tab1.Type = TabTypeCode.SignHere;
tab1.XPosition = "50";
tab1.YPosition = "200";
Tab tab2 = new Tab();
tab2.RecipientID = "1";
tab2.PageNumber = "1";
tab2.DocumentID = "1";
tab2.Type = TabTypeCode.DateSigned;
tab2.XPosition = "110";
tab2.YPosition = "225";
envelope.Tabs = new Tab[] { tab1, tab2 };
APIServiceSoapClient proxy = Get_Proxy();
EnvelopeStatus status = proxy.CreateAndSendEnvelope(envelope);
StatusLabel.Text = "The envelope is " + status.Status.ToString() + ".";
-
每个通常为自己签署文件,从而确认自己是作者或授权该文件。在这种情况下,他使用自己的证书和私钥。也有可能几个人共享相同的证书和密钥(例如,几个VP,每个人都有权批准某些文档)。
-
您可以使用一些Office自动化,也可以使用一些第三方库,如我们的SecureBlacbox(除其他功能外,它支持使用特定格式签名标准的PDF签名、Office文档签名和XML签名,以及CMS/CAdES"通用"签名)。示例包含在可下载的软件包中。
请注意,PDF格式不支持具有多个独立签名。Office签名格式确实支持独立签名(此外,在二进制格式中,会签是不可能的)。