Я хотел бы скопировать все сертификаты шифрования, связанные с одним маркером, в набор других файлов.
Конечно, есть функция QueryUsersOnEncryptedFile
, которая возвращает PENCRYPTION_CERTIFICATE_HASH_LIST
и есть функция AddUsersToEncryptedFile
, которая принимает PENCRYPTION_CERTIFICATE_LIST
.
Так что, насколько я понимаю, для копирования сертификатов эти хэши необходимо преобразовать обратно в список сертификатов.
Чтобы сделать этот переход, я возился с CertFindCertificateInStore
.Это работало до некоторой степени, но не для всех сертификатов, я даже не знаю, какие хранилища сертификатов я должен запросить ... Я попробовал несколько: CA
, ROOT
, MY
, SPC
, Trust
, TrustedPeople
, AuthRoot
(и даже AddressBook
, который, кажется, содержит устаревший кэш сертификатов, как некоторые, где уже истек срок действия), но ни один из них не дал мне доступ ко всем сертификатам, которыеУ меня есть хэши для.
Итак, как я могу надежно сопоставить хэш сертификата с самим сертификатом? (Некоторый пример кода был бы хорош.)
Спасибо вadvance!
В качестве примечания:
Я также хотел бы удалить все остальные сертификаты из этих же целевых файлов.Для этой цели доступна функция под названием RemoveUsersFromEncryptedFile
, которая также принимает PENCRYPTION_CERTIFICATE_HASH_LIST
.
Я предполагаю, что этот список можно было бы собрать, сначала вызвав QueryUsersOnEncryptedFile
для каждого файла и передав получившийся сертификатсписок хэшей: RemoveUsersFromEncryptedFile
(в том же файле).
Но есть предостережение: я не хочу терять все сертификаты, иначе файлы больше не будут доступны никому! Могу ли я безопасно обнулить свой (и, следовательно, любой другой разрешенный) хэш сертификата из этого списка промежуточных хешей? (Учитывая, что есть также выделенная FreeEncryptionCertificateHashList
функция.)