【问题标题】:C# Multiple Digital Signatures on Documents文档上的 C# 多重数字签名
【发布时间】:2013-08-28 01:54:38
【问题描述】:

我在 C# .net 应用程序中要求能够向文档添加多个数字签名。该文档将作为模板上传,然后将经过几个处理阶段(邮件合并),然后将被下载。要求多方分别对其进行数字签名。

我有以下问题

1) 是否每个人都需要单独的证书才能签名。 2) 我可以选择在网络服务器上安装 office 还是购买 3rd 方组件。 3) 我将非常感谢 c#/.net 中的任何示例(使用 docx 或 pdf 来证明这一点)

【问题讨论】:

  • 使用adobe EchoSign或DocuSign,都有丰富的api与点网代码集成,支持多方和给定订单签名支持
  • 谢谢你,我会调查的。我认为使用其中一项服务意味着我的应用程序向他们的 api 提交文档并获得签名副本?如果我有很多数字签名,这是我需要提前配置的吗?例如如果用户 1、用户 2、用户 3 和用户 4 都需要签署文件,是否需要分别向提供商注册?
  • 没有。只有发件人应该注册。不是全部

标签: c# .net document digital-signature


【解决方案1】:

下面我使用 DocuSign WebService 编写代码以发送要由多方签名的文档: 您可以从他们的站点获取 WebService(.asmx) url,并了解如何将此 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() + ".";

【讨论】:

  • 我说得对吗?这可能会变得相当昂贵。我看到提到每个用户每月 20 美元。我的应用程序是小型门户网站,但大约有 50-60 个用户都需要通过我的应用程序签署文档。我所使用的只是与我的产品通信的 API,所以我不确定它如何与他们的许可模型一起使用。
  • 应用有不同的价格。您应该只询问交易定价而不是座位定价。
【解决方案2】:
  1. 每个人通常为自己签署文件,从而确认他是作者或他授权文件。在这种情况下,他/她使用自己的证书和私钥。也有可能几个人共享同一个证书和一个密钥(例如,几个 VP,他们每个人都有权批准某个文件)。

  2. 您可以使用一些 Office 自动化,也可以使用一些第三方库,例如我们的 SecureBlackbox(除其他功能外,它还支持使用特定格式签名标准的 PDF 签名、Office 文档签名和 XML 签名,以及CMS/CAdES“通用”签名)。示例包含在可下载的包中。

请注意,PDF 格式不支持拥有多个独立签名。 Office 签名格式确实支持独立签名(此外,二进制格式的会签是不可能的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多