2

设想:

有两个 notes-client 用户 A 和 B,他们从发生以下情况的机器登录。

用户 A 是最后一个使用 notes 客户端的人(因此,notes.ini 包含她的信息)。而且,我工作的数据库是用户 B 的 nsf 文件。

行动:

我正在将文件附加到加密笔记,使用NSFNoteAttachFile. 附加后,我想使用MIMEConvertCDParts将注释转换为 MIME。(并用于MIMEStreamOpen将内容作为流获取)

我没有解密笔记的密钥/ID/密码。因此,当我将其转换为 时MIMEConvertCDParts,便笺的内容是

"[此 MIME 文档的某些部分使用 Notes 证书加密,无法读取。]",

这是预期的。

问题

但是我之前添加的附件在转换后的流中丢失了(最初存在的附件仍然存在,但大小为零——也如预期的那样——因为我没有提供密钥/密码)

MIMEConvertCDParts我尝试在(转换)之前和之后转储注释的字段。

在转换之前,$File带有我的附件的“”对象作为字段之一存在,

但转换后,它不会显示在 MIME 中,而是转换将其添加到字段“ $MIMETrack”中。

“CD-MIME 在 02.25.2013 10:30:02 AM 失败:您必须提供批量解密密钥才能提取此文件对象。”

我认为当我添加附件时,它是使用 NSF 文件的原始所有者(用户 B)的公钥(或存在的其他一些密钥)加密的。

我需要知道的

我如何告诉/强制notesapi在我添加文件时保持原样。即,无加密。

或者我如何在转换时要求它解密(如果它使用用户 A 自己的密钥进行加密)。我怎么知道用来加密附件的密钥是什么?

任何帮助,将不胜感激。

谢谢,小男孩。

PS:如果我将用户 B 的 nsf 文件带到一个从未意识到 B 的域/机器上,那么我在添加/获取附件时没有问题。这就是让我认为 B 的公钥可能为 A 所知的原因,当我添加到 B 的注释时,文件会自动加密。

4

1 回答 1

0

首先,B 的公钥是……公开的。它在 Domino 目录中。域中的每个人都知道它,因此每个人都可以为 B 加密文档。但是我对您的最后一段感到有些惊讶。我希望这个操作永远不会起作用。我不认为您可以在同一个笔记中混合加密和未加密的附件。

在任何情况下,有关文档为谁加密的信息都在 $Seal 项目中,这是一个 ITEM_NAME_NOTE_SEALUSERS 项目,但我不知道如果您没有密钥,是否可以从该字段中提取任何有用的信息. NSFNoteDecrypt 函数用于解密加密的笔记,假设您拥有私钥。如果您没有密钥,它将返回错误。查看 Notes C API 用户指南中的第 11-2 章。对于使用 Notes/DOmino 8.0.1 或更高版本加密的数据,首选 NSFNoteCipherDecrypt。

于 2013-02-26T15:54:51.920 回答