Добрый день, я разрабатываю внешнюю ЭЦП компоненту для 1С на С++, IDE VS Professional 2022. По ходу разработки у меня появился ряд вопросов касательно KalkanCrypt.
-
Сырая подпись почему-то работает только с входящим PEM и выходящим BASE64 флагами. В документации об этом нет ни слова.
-
Все подписи (имеется ввиду CMS подпись) с отметкой Time Stamp не работают на тестовых вариантах(тестировал 3 разных варианта), на выходе вместо данных мы получаем пустую строку (без выявления ошибки), но на действующих ЭЦП все проходит нормально. (Пожалуйста укажите это явно в Технической Документации, либо исправьте тестовые варианты, чтобы они отрабатывались корректно.)
-
Я не смог разобраться как использовать ваши статические “.lib” файлы (В технической документации нет об этом информации).
После подключения либ файлов и попытке вызова из них функций по названиям, которые имеются в примерах и вашей технической документации, компилятор выдает ошибки вызова функций (то есть не может найти имена функций из этих либ). В примере для C++ используется динамическая библиотека, которая нам не подходит под задачи, а в примере для Linux используются либы из openSSL, которые не хотелось бы использовать (не из за того, что это сложнее, а из за переживаний на тему усложнения поддержки этого кода, тк вами используется, как я понял, кастомная openSSL). -
В технической документации достаточно скудно упоминаются возможности замены одних флагов на другие(и наслоения флагов друг на друга), это может ввести(и наверняка вводит) в заблуждение мало опытных разработчиков в этой среде, из за чего это сильно увеличивает затраты времени на разбирание Технической Документации для использования ваших библиотек.
-
Ни в Технической Документации, ни в примерах нет информации как, например, записать внутрь PKCS12 контейнера отдельно хранящуюся подпись(CMS/DRAFT).
-
Мы столкнулись с такой проблемой: если путь до файла (сертификата) содержит в себе кириллицу, то ваша библиотека не открывает этот файл как минимум через функцию “X509LoadCertificateFromFile()” (если путь полностью состоит из латиницы, то все проходит нормально и она работает).
-
Документация разбросана в разных папках SDK (речь идёт про файлы с расширением “.docx”), так же как и примеры. Навигация была бы сильно удобнее, если бы все варианты документации имели бы свою папку, так же как и примеры для разных ЯП.
Например забавная ситуация, когда я только начал разработку я столкнулся с такой проблемой, открываю пример под windows: смотрю в пример вижу там .txt файл захаркоженный в определенное место в папках (“example/test_CMS_GOST.txt”), пытаюсь его найти, а его просто нет, пользуюсь поиском по папке SDK нахожу его расположение тут “\C\Linux\C\test\example\test_CMS_GOST.txt”. Так же документация хранится по пути “\C\Linux\C\docs” (я понимаю что в заголовке этой документации написано, что она под библиотеки линукса, но она актуальна и для windows), а более менее подробная документация функций “SignData()” и “VerifyData()” имеет путь “\COM_Windows\docs”. -
Присутствие мелких ошибок в документации вводящих в ступор https://imgur.com/xFNZCIw (В данном случае не очевидно, что должна в себе содержать inSign).
А вот тут в примере функция принимает 7 аргументов (https://imgur.com/9v1JdSk), а в документации и хэдере она имеет 10 аргументов (https://imgur.com/3lsKT6C). -
Пример имеющийся под C/C++ рассчитан сугубо под идеальные условия алгоритма выполнения, о чем стоило бы предупреждать в комментариях самого примера.
Этот пост не претензия, чтобы показать свое “фу”, а просто мои наблюдения и вопросы, возникшие по ходу работы, заранее спасибо за ответ