NTFS EFS:如何将加密证书从一个文件复制到(一个)其他文件?

时间:2012-01-31 13:21:58

标签: encryption certificate efs certificate-store

我想将与一个标记文件关联的所有加密证书复制到一组其他文件中。

当然,QueryUsersOnEncryptedFile函数返回PENCRYPTION_CERTIFICATE_HASH_LIST,而AddUsersToEncryptedFile函数需要PENCRYPTION_CERTIFICATE_LIST

因此,据我所知,要复制证书,需要将这些哈希值转换回证书列表。

为了实现这一转变,我一直在忙着CertFindCertificateInStore。这在某种程度上起了作用,但不是所有证书,我甚至不知道我应该查询哪些证书存储...我确实尝试了一些:CAROOT,{ {1}},MYSPCTrustTrustedPeople(甚至AuthRoot,似乎包含过时的证书缓存,如一些已经过期的地方)但是他们都没有让我访问我哈希的所有证书。

那么,我如何可靠地将证书哈希映射回证书本身? (一些示例代码会很好。)

提前致谢!


作为旁注:

我还想从这些相同的目标文件中删除所有其他证书。为此,有一个名为AddressBook的函数,它也需要RemoveUsersFromEncryptedFile

我想这个列表可以通过先在每个文件上调用PENCRYPTION_CERTIFICATE_HASH_LIST来收集,然后将生成的证书哈希列表传递给QueryUsersOnEncryptedFile(在同一个文件中)。

但有一点需要注意:我不想放弃所有证书,否则任何人都无法访问这些文件! 我是否可以安全地将我自己的(以及任何其他允许的任何其他允许的)证书哈希从此中间哈希列表中清零?(假设还有一个专用的RemoveUsersFromEncryptedFile函数。)

1 个答案:

答案 0 :(得分:1)

我自己找到了答案:有一个名为DuplicateEncryptionInfoFile的API可以完全满足我的需求。我应该再搜索一下......

感谢阅读,但我希望有一天这个问题+答案可以帮助某人; - )