gpt4 book ai didi

lotus-notes - 通过 DIIOP 使用 Java API 进行 Lotus Note 邮件签名

转载 作者:行者123 更新时间:2023-12-01 09:26:49 28 4
gpt4 key购买 nike

我们在Java程序中使用DIIOP发送邮件,但是当收件人打开邮件时,虽然有“此邮件已数字签名”,但状态栏上有一条警告消息“此文档已被更改,因为签署时间!可能发生了故意篡改。”检查收到邮件的属性,“$Signature”有,但“$SignatureStatus”为“2”,表明文档签名后已被更改。

代码片段:

lotus.domino.Document memo = dominoDb.createDocument();
memo.replaceItemValue( "Form", "Memo" );
...
memo.setSaveMessageOnSend(true);
memo.setSignOnSend(true);
memo.sign();
memo.send(false);

如果省略 memo.sign() 或 memo.setSignOnSend(true),则接收到的文档不会在没有 $Signature 且 $SignatureStatus 值为“0”的情况下进行签名。

顺便说一下,memo.setEncryptOnSend(boolean) 的工作原理与预期一致。

最佳答案

您无法通过 DIIOP 使用 Notes Java API 来签署电子邮件。

加密之所以有效,是因为它需要接收者的公钥,该公钥位于服务器上的 Domino 目录中,并且可由通过 DIIOP 在服务器上远程访问的 API 代码访问。

另一方面,数字签名需要发送者的私钥。私钥存储在用户的 Notes ID 文件中。当您通过 DIIOP 连接到 Notes 时,系统不会提示您输入用户 Notes ID 文件的密码,而访问私钥需要该密码。

事实上,在大多数使用 DIIOP 的情况下,用户的 Notes ID 文件甚至不存在于运行代码的计算机上,因为该计算机上没有安装 Notes 软件。您拥有的只是 NCSO.jar 文件,该文件不包括能够解密和读取 ID 文件的核心 Notes 代码。尽管用户的 Notes ID 文件可能存在于您要连接的服务器上,并且可能存储在 ID 库中,但无法通过任何已发布的 API 访问其中的私钥。

关于lotus-notes - 通过 DIIOP 使用 Java API 进行 Lotus Note 邮件签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com