NTFS EFS: Как скопировать сертификаты шифрования из одного файла в другой файл? - PullRequest
0 голосов
/ 31 января 2012

Я хотел бы скопировать все сертификаты шифрования, связанные с одним маркером, в набор других файлов.

Конечно, есть функция 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 функция.)

1 Ответ

1 голос
/ 02 февраля 2012

Я нашел ответ сам: есть API под названием DuplicateEncryptionInfoFile, который делает именно то, что мне нужно. Я должен был искать немного дальше ...

Спасибо за чтение, я надеюсь, что этот вопрос + ответ кому-нибудь когда-нибудь поможет; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...