Тема: ms crypto api по 2012 сертификату берется 2001 провайдер
Доброго времени суток всем!
Предыстория.
Работаем через MS Crypto API.
Сертификат устанавливаем в системное хранилище Windows через Сигнатуру на закладке Сертификаты:
выбираем Текущий пользователь
выбираем файл с раширением cer (предварительно выгруженный из Справочника сертификатов)
Хранилище - Личное
Имя ключа сертификата - выбираем то что на считывателе (в данном случае флеш накопитель)
Имя - пишем какое-нибудь понятное имя
нажимаем кропку Установить.
Далее программно ищем сертификат в хранилище, берем его контекст и смотрим CERT_KEY_PROV_INFO_PROP_ID в его св-вах, получаем CRYPT_KEY_PROV_INFO, находим в структуре контейнер, имя провайдера и его тип и получаем ссылку на криптопровайдер через CryptAcquireContext. Далее подписываем, заполняя CMSG_SIGNER_ENCODE_INFO и тд.
История.
Всё работало хорошо на разных компьютерах, пока не появился один, где берется не тот провайдер и следом не тот алгоритм хэширования. Затем уже не проверяется подпись, тк на другой стороне по сертификату берутся 2012е алгоритмы.
Условный лог проблемной машины:
--------------------------------------------------
Фильтрация сертификатов: UserKeyId=40 50 13 70 BC 10 F2 74 E0 01 22 09 58 7F 6F 94. Осталось 1
--------------------------------------------------
Provider: ContainerName=4903RHGVBZ01. ProvName=Validata GOST R 34.10-2001 CSP. ProvType=75.
--------------------------------------------------
HashAlgInCryptoProvider: alg=1.2.643.2.2.9 - ГОСТ Р 34.11-94.
--------------------------------------------------
Sign: cert=40501370BC10F274E0012209587F6F94-CN=PROCESSING**9, OU=********05, O=OK**5, L=REGRNP, S=**, C=RU. keyspec=1. halg=1.2.643.7.1.1.3.2-ГОСТ Р 34.11-2012/ГОСТ Р 34.10-2012.
Условный лог здоровой машины:
--------------------------------------------------
Фильтрация сертификатов: UserKeyId=40 50 13 70 cb 53 60 43 a6 d3 6f 23 58 60 8e ce. Осталось 1
--------------------------------------------------
Provider: ContainerName=0903V285XB01. ProvName=Validata GOST R 34.10-2012 CSP. ProvType=80.
--------------------------------------------------
HashAlgInCryptoProvider: alg=1.2.643.7.1.1.2.2 - ГОСТ Р 34.11-2012.
--------------------------------------------------
Sign: cert=40501370CB536043A6D36F2358608ECE-CN=PROCESSING**5, OU=********11, O=OK**1, L=REGRNP, S=**, C=RU. keyspec=1. halg=1.2.643.7.1.1.3.2-ГОСТ Р 34.11-2012/ГОСТ Р 34.10-2012.
Подскажите куда копать, что посмотреть и проверить?