我正在开发第三方加密服务提供程序(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进行数字签名。请帮助我解决这个问题。
答案 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。