我们有Lotus Notes签名文档和用户的公钥。 我们需要做的事情:将密钥输入特殊应用程序中的字段(可以是Lotus Notes数据库或某些特殊软件)。然后我们问这个特殊的应用程序:“此文档是否真的由此用户使用此公钥签名?” 我们的应用必须回答:是或否。
我们尝试编写这个特殊的应用程序,但我们遇到了一些问题:
我们在文档中有一个名为$ Signature的字段,即签名字段的哈希值,使用签名者的私钥加密。我可以在文档的属性中看到该字段的内容。但我无法以编程方式提取它(我尝试过LotusScript和Java)。我没有找到任何办法。
因此,我只需手动复制此字段的内容并将其粘贴到特殊表单的字段中即可进一步分析。但在那里我遇到了另一个问题。我不知道如何解密这个签名。 Lotus使用什么算法来签名哈希?如果我知道算法,我想我将能够用Java解密它并得到签名字段的哈希。
我相信还会有一个问题。我不知道Lotus如何计算字段的哈希值。它使用md5吗?我需要知道它能够比较哈希并说这个用户是否签署了文件。
因此。这是利益任务。但现在解决它是不可能的。路上有3个大问题。任何人都可以帮助他们吗?
答案 0 :(得分:0)
答案是:不要自己尝试这样做。不是你描述它的方式。有一个用于验证Notes签名的API。
只需将文档的UNID复制到您的数据库,然后使用Notes C API编写代码以打开文档并调用API函数NSFNoteVerifySignature()
进行验证。您可以使用JNI从Java执行此操作,也可以按照here所述的技术从LotusScript执行此操作,或者您可以使用LSX toolkit,或者只编写独立的C程序。
您无论如何都必须使用Notes C API来处理您提出的三个点中的两个: