| ||||
| ||||
Здравствуйте. После долгого поиска в гугле, решил спроситья здесь, т.к. вроде здесь есть люди использующие(или когда-то использовали) связку Capicom+Delphi. У меня есть программа подписывающая при помощи эл. подписей и проверяющая соотв. Программа работает, но есть беда - все хорошо если размер подписываемого файла является кратным 2. Если размер - нечетное число - файл уже не тот, тк последний байт файла "исчезает". Причем сама прога говорит что все ок, проблемму обнаружили использовав openssl и программу на java+cryptoapi Поиск в Гугле выявил причину этого ефекта: http://www.codeproject.com/dotnet/CapicomUTF8.asp - оказывается capicom_tlb который генерится при помощи tlibimp использует widestring для передачи параметров к Signeddata.Content .Sign .Verify и задав содержание с нечетным количеством байтов, последний удаляется. В ссылку выше, человек дал рещшение проблемы для C#, но моя попытка применить такое-же решение для Делфи 6 не привели к успеху - наверно у меня не хватает мастерства, да и последние годы Делфи не использовал ( . Еще нашел что вроде какой-то человек просто заменил все widestring на string в функциях TSignedData но потом не написал работает ли... Вопрос: Может ли кто-нибудь подкинуть подсказку или пофиксеный capicom_tlb.pas ? Спасибо | ||||
Ответы: | ||||
| ||||
чтож, проблемму решил оказалось в Дельфи вовсе не надо делать что-то с тлб - просто надо сделать SignedData.Content := Caputil.ByteArrayToBinaryString ( String2byteArray ( sAnsiString) ) где String2byteArray - переводит стринг в байт массив Всего хорошего :) | ||||