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