30.07.2002 12:33:11CryptoAPI и COM Ответов: 8
Kosinov Maxim
Приветствую ! Такой трабл: переносил из одной своей проги кусок, который творил посредством CryptoAPI цифровую подпись. Мне нужен был COM объект с такими же возможностями. Процедуры подписывания и проверки перенесены один в один (код не правил). В итоге функция CertFindCertificateInStore выдает отрицательный результат, хотя в старой проге всё отлично работало. Может дело быть в каких то особенностях COM ?
 
Ответы:
01.08.2002 14:02:27kure
Либо чтто то с кодировкой при передаче в COM, либо CertFindCertificateInStore не имеет доступа к разделу CurrentUser, что может легко случиться в зависимости от модели COM интерфейса.
01.08.2002 16:43:26Kosinov Maxim
С кодировкой проблем нет, так как все параметры CertFindCertificateInStore задаються в самом COM объекте. А вот нельзя ли поподробнее (можно и по e-mail, если не трудно) что может быть с версией COM ?
01.08.2002 16:53:49kure
Не скажу точно: возможо права, учетная запись от лица которой запускается.
А что вам CAPICOM не подходит?
01.08.2002 17:20:37Kosinov Maxim
Да не юзал я как то CAPICOM, думал быстренькл перенести всё из предыдущей проги, да не вышло :)) Помню, раньше пробовал сделать ЦП посредством Capicom 1.0, но что то мне там не понравилось в формате подписи (точно не помню, но вроде она содержала еще информацию о сертификате, а отделить их у меня не получилось). Если можно где то будет найти примерчик как с помощью CAPICOM подписать алгоритмомо RSA MD5 c длиной ключа 1024 бит, то буду очень благоодарен.
01.08.2002 17:24:18kure
http://home.iSTAR.ca/~neutron/wsh
либо в дистрибутиве CAPICOM
08.08.2002 11:39:30Kosinov Maxim
Ситуация продолжает меня радовать. Ладно, может нет доступа к Current User, вот я и решил читать подпись из файла "*.pfx" напрямую. В тестовом екзешнике всё написал, всё отлично работает. Но с COM ситуация повторилась : теперь уже функция PFXImportCertStore возвращает отрицательный результат.
08.08.2002 12:34:28Kosinov Maxim
Сохранил структуру pPFX (вернее все её поля: cbData, pbData) на диске в коде exe-ка и в COM, перед выполнением функции:
if(!(hStore = PFXImportCertStore(&pPFX,szPassword,0)))
handleError(EPOS_OPEN_STORE);
Что не идивительно, структура идентична, но в одном случае PFXImportCertStore выполняеться, а в другом нет :(
08.08.2002 16:48:05Eraserhead
Проблемма решилась. Вопрос был не к коду COM - объекта, а нашему админу, чтоб повысил под IIS права доступа скрипта index.php, который работал с COM - объектом.