Проверка CTL
Чтобы interloper усложняло замену фиктивного списка доверия сертификатов (CTL) на существующий, проверяйте подпись в CTL каждый раз при использовании CTL. Не используйте CTL, который не содержит доверенной сигнатуры.
Проверка подписи CTL
- Откройте хранилище сертификатов , содержащее требуемый CTL.
- Получение дескриптора CTL_CONTEXT для CTL. Это можно сделать, вызвав любую из функций, возвращающих дескриптор CTL_CONTEXT, например CertFindCTLInStore.
- Вызовите CryptMsgGetAndVerifySigner, передав CTL_CONTEXT , полученные на шаге 2, в параметре hCryptMsg , дескриптор в хранилище сертификатов, содержащее сертификат доверенного источника для списков ctls в параметре rghSignerStore , и CMSG_TRUSTED_SIGNER_FLAG в параметре dwFlags . Если функция возвращает значение TRUE, подпись была проверена, а в параметре ppSigner возвращается указатель на PCCERT_CONTEXT подписывателя CTL .