从Microsoft Word for Digital Signature调用第三方加密服务提供程序

时间:2017-02-27 06:40:49

标签: digital-signature cryptoapi service-provider

我正在开发第三方加密服务提供程序(CSP)DLL,并希望将其与Microsoft Windows集成。这个开发的主要目标是调用我们的加密函数,如数字签名和来自Word,excel等Office工具的签名验证。这里我面临以下问题。

1)我开发了CSP DLL,签名并在注册表项中注册。这是正常的,因为我们通过加载我们的cpacquirecontext和其他加密API来测试应用程序。我们在测试应用程序中提供CSP名称“XYZ”,以便测试应用程序正确识别我们的dll并相应地调用函数。

2)此后我们要从Microsoft Word调用我们的CSP dll API进行数字签名操作。为此,需要进行哪些设置/配置才能绕过默认的Microsoft csp并调用我们的csp dll进行数字签名。请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

为了使存储在CSP中的证书可供Office和其他应用程序用于数字签名操作,您需要使用"MY" certificate store在Windows CertAddEncodedCertificateToStore中注册这些证书,然后更新{{使用CERT_KEY_PROV_INFO_PROP_ID生成的CERT_CONTEXT的属性,以指示您的CSP名称和证书密钥所在的容器。

我编写了一个小命令行程序,它使用此方法将存储在给定CSP中的所有证书加载到“MY”证书库。它还提供从“MY”证书存储中删除证书的可能性,这在证书不再需要/可用时很有用。 您可以从CertSetCertificateContextProperty获取其源代码。

我希望这会有所帮助。

答案 1 :(得分:0)

我和你有同样的情况。
我的CSP可以与测试应用程序和MS Office 2007一起使用,但它不能与MS Office 2010和2013一起使用 这是MS Office的问题:

  

Office 2010不支持Windows 7或Windows Vista环境中的某些证书​​。具体而言,这些不受支持的证书使用由第三方加密服务提供程序(CSP)存储的私钥。因此,无法使用加密API(CAPI)对Office 2010文档进行签名。

您可以下载Office 2010修补程序包(Mso-x-none)here

对于MS Office 2013,您似乎需要Service Pack 1。