Я обновился, заменив IolaCOM на KalkanCryptoCOM. Но ошибка, указанная в первом посте не исчезла.
По-прежнему при декодировании сигнатуры, полученной при подписании гостовским алгоритмом, выбрасывается исключение "Неизвестный криптографический алгоритм", причем только с гостовскими тестовыми сертификатами.
Согласно статье
rsdn.org/article/crypto/cspsecrets.xml при реализации собственного криптопровайдера первым делом необходимо выстроить соответствующую структуру веток реестра системы, где как раз указывается oid алгоритма хэширования и точка входа в провайдере, именно oid используется системой как метка, по которой осуществляется поиск реализации алгоритма хэширования. Но, посмотрев данную ветку реестра (HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo), я не обнаружил oid гостовского хэша (1.2.398.3.10.1.1.1.2). Переустановка NCALayer проблему не решила.
Возможно, я что-то делаю не так?
Извиняюсь за свою глупость, но также возникли проблемы при использовании скомпилированной под delphi тестовой утилиты из состава sdk. Программа KNCA Kalkan Crypt Test Project (x32) успешно запустилась (KalkanCryptCOM библ-ка также успешно зарегистрирована (x32)), но при выполнении следующей последовательности действий:
1. Выбор личного тестового rsa сертификата (Путь к ключу)
2. Установка Формата вх/вых данных как IN Base64 и OUT Base64 соответственно, установка "Сырая подпись", все остальные поля по умолчанию
3. Далее нажатие на кнопку "Показать сертификат ключа" - ключ успешно отображается
4. Далее нажатие на кнопку "Информация о сертификате" - информация отображается успешно
5. Подписание - "Sign Data" - успешно подписывается, отображается сигнатура подписи
6. Верификация - "Verify Data" - возникает ошибка:
Error: 0x04091077
Verify - FAILED.
error:04091077:rsa routines:func(145):reason(119)
Возможно, я выполняю неправильный порядок действий?
В общем, у меня складывается впечатление, что криптопровайдер как будто был неправильно установлен или не до конца, или что-то в этом роде.
Буду рад любой помощи, спасибо.