我在C#.net应用程序中要求能够为文档添加多个数字签名。该文档将作为模板上传,然后将经历几个处理阶段(邮件合并),然后将下载。需要让几个方面各自进行数字签名。
我有以下问题
1)每个人是否需要单独的证书才能签名。 2)我是选择在网络服务器上安装办公室还是购买第三方组件。 3)我非常感谢c#/ .net中的任何示例(使用docx或pdf来证明这一点)
答案 0 :(得分:1)
下面使用DocuSign WebService编写代码,发送文件由多方签名:
您可以从其网站获取WebService(.asmx)网址,并介绍如何将此Service Reference
添加到您的项目中。
您可以从here
获取有关信封或标签的详细信息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() + ".";
答案 1 :(得分:1)
每个人通常为自己签署文件,从而确认他是作者或他授权该文件。在这种情况下,他/她使用自己的证书和私钥。也可能有几个人共享相同的证书和密钥(例如,几个VP,每个人都有权批准某个文档)。
您可以使用某些Office自动化,也可以使用某些第三方库,例如我们的SecureBlackbox(其他功能包括使用格式特定的签名标准支持PDF签名,Office文档签名和XML签名) ,还有CMS / CAdES“通用”签名)。样本包含在可下载的包中。
请注意,PDF格式不支持具有多个独立签名。 Office签名格式确实支持独立签名(此外,在二进制格式中,不能进行会签签名)。