2015-10-16 6 views
0

Предположим, у нас есть действующий дескриптор HCERTSTORE открытого хранилища сертификатов. Как мы можем определить - открыт ли физический или системный магазин?определять, сертификат. хранить систему или физическую, имея только ручку HCERTSTORE

Ограничение 1 - мы должны использовать только CryptoAPI (C++).

Restriction 2 - мы успешно забыли, какой магазин был использован в вызове CertOpenStore().

+0

Ограничения произвольны. Я не вижу [практическую проблему] (http://stackoverflow.com/help/on-topic) для решения. Ручки не могут быть переданы между процессами, поэтому нельзя «забыть», что это было, если не преднамеренно. –

+0

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что проблема для решения и, в частности, ограничения являются искусственными. –

ответ

0

Я не вижу способа решить это с помощью CryptoAPI, и, поскольку ограничение 2 является искусственным, не думайте, что оно предназначено для решения этой проблемы. Замкнутые ручки не могут быть переданы между процессами, поэтому нельзя «забыть», что это было, если не преднамеренно: знание прямо там, в коде, который получил ручку.

Просматривая список функций в левой панели в CertOpenStore - MSDN, я вижу CertGetStoreProperty(), но есть только один предопределенное свойство, CERT_STORE_LOCALIZED_NAME_PROP_ID, который не является надежным.

+0

Спасибо. Я также не видел способа решить эту проблему, вот почему я спросил. Вопрос не в самой «практике», а в том, что он помог мне определить интерфейс для обертывания собственных методов хранения сертификатов, так что это касается практики (оформления) для меня. – MrCat