我想将与一个标记文件关联的所有加密证书复制到一组其他文件中。
当然,有QueryUsersOnEncryptedFile一个返回 aPENCRYPTION_CERTIFICATE_HASH_LIST的函数,还有AddUsersToEncryptedFile一个接受 a的函数PENCRYPTION_CERTIFICATE_LIST。
因此,据我了解,要复制证书,这些哈希需要转换回证书列表。
为了进行这种转变,我一直在搞乱CertFindCertificateInStore. 这在某种程度上起作用了,但不是所有证书,我什至不知道我应该查询哪些证书存储......我确实尝试了一些:CA,,,,,,,(甚至ROOT,这似乎包含过期的证书缓存,因为其中一些已经过期)但它们都没有让我访问我拥有哈希值的所有证书。MYSPCTrustTrustedPeopleAuthRootAddressBook
那么,我怎样才能可靠地将证书哈希映射回证书本身呢? (一些示例代码会很好。)
提前致谢!
作为旁注:
我还想从这些相同的目标文件中删除所有其他证书。为此,有一个可用的函数,称为RemoveUsersFromEncryptedFile,它也需要一个PENCRYPTION_CERTIFICATE_HASH_LIST.
我想这个列表可以通过首先调用QueryUsersOnEncryptedFile每个文件来收集,然后将生成的证书哈希列表传递给RemoveUsersFromEncryptedFile(在同一个文件上)。
但是有一个警告:我不想丢失所有证书,否则任何人都无法访问这些文件!我可以从这个中间哈希列表中安全地将我自己的(以及任何其他允许的)证书哈希清零吗?(鉴于还有一个专用FreeEncryptionCertificateHashList功能。)