[C#/COM] Как подписать файл и проверить подпись?
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ТЕМА: [C#/COM] Как подписать файл и проверить подпись?

[C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4080

  • maximka
  • Захожу иногда
  • Постов: 41
  • Репутация: 0
Привет.

Разбираю примеры, которые идут вместе с SDK. Стек - .NET/C#. Пытаюсь через пример подписать файл (.txt/.pdf) -- подписывает через галочку "сырая подпись". Дальше пытаюсь проверить - выдаёт ошибку - KCR_BASE64_DECODE_ERROR - 0x08F0001d.

Смотрю в пример, не совсем понятно, почему делается
inData = System.IO.File.ReadAllBytes("C:\\test\\testtext.txt");
, а далее из этого массива байтов вы отправляете только 1-ый элемент
KalkanCOMTest.SignDataBytes("", kalkanFlags, ref inData[0], inData.Length, out outSign);


Ещё больше вопросов вызывает, почему при следующей проверке файла, у вас вместо ReadAllBytes стоит ReadAllText? И метод VerifyData принимает строку, а не байты.
Изменено: 1 год, 2 мес. назад от maximka.

Re: [C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4082

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Добрый день!

Метод SignDataBytes() был рассчитан для attached подписи.
Для использования detached подписи придется дорабатывать библиотеку и писать отдельный метод для проверки подписи.
Модератор

Re: [C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4084

  • maximka
  • Захожу иногда
  • Постов: 41
  • Репутация: 0
Murat Seisenov написал:
Добрый день!

Метод SignDataBytes() был рассчитан для attached подписи.
Для использования detached подписи придется дорабатывать библиотеку и писать отдельный метод для проверки подписи.

Но это ведь не объясняет, почему в примере кнопка "подписать файл" считывает файл в массив байтов, а потом отправляет в Kalkan только 1-ый элемент массива. А кнопка "проверить файл" считывать текст из файла вместо байтов. То есть пример (C#/WinForms) является неполным? Чтобы доработать библиотеку, она должна быть открытой для добавления, но закрытой для модификации -- у вас она полностью закрытая, правильно понимаю?

Что мне в данный момент делать и куда копать, чтобы подписывать сообщения и файлы (ms office, pdf, zip)?
Изменено: 1 год, 2 мес. назад от maximka.

Re: [C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4086

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Передается не первый элемент а ссылка на первый элемент массива и длина массива.
Исходные коды библиотеки закрыты.

Вы можете кодировать ваш файл в base64 и подписать как строку данных методом SignData().
Модератор

Re: [C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4088

  • maximka
  • Захожу иногда
  • Постов: 41
  • Репутация: 0
Спасибо за оперативный ответ!
Murat Seisenov написал:
Передается не первый элемент а ссылка на первый элемент массива и длина массива.
Исходные коды библиотеки закрыты.

Пардон, ссылка на первый элемент; но это не меняет сути -- нет ведь 100% гарантии, что байты не совпадут. И потом, в примере у вас явно указан этот метод для подписи файлов. При подписи читаем файл в байты:
inData = File.ReadAllBytes("C:\\temp\\Письмо регистрация ДТС РБ.pdf");
рядом стоит закомментированная строка //inData = System.IO.File.ReadAllText("C:\\test\\testtext.txt");

а при проверке почему-то текстом:
inData = System.IO.File.ReadAllText(filePath);

VerifyData не принимает ни единого байта. Поясните принцип, если не затруднит. И для чего вообще тогда нужен и как используется SignDataBytes?

Murat Seisenov написал:
Вы можете кодировать ваш файл в base64 и подписать как строку данных методом SignData().

Моветон какой-то. Нет других альтернатив, более элегантного способа?

И ещё один вопрос: можно ли вообще создавать свои сертификаты через библиотеку?

Re: [C#/COM] Как подписать файл и проверить подпись? 1 год, 2 мес. назад #4089

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
maximka написал:
ссылка на первый элемент; но это не меняет сути -- нет ведь 100% гарантии, что байты не совпадут.

Споры бесполезны. Учите основы C/C++.

maximka написал:
VerifyData не принимает ни единого байта. Поясните принцип, если не затруднит. И для чего вообще тогда нужен и как используется SignDataBytes?

Ответил в первом сообщении в данной теме: SignDataBytes предназначался для attached подписи, которая успешно проверяется методом VerifyData. Т.к. содержит исходные данные внутри подписи. Для того чтобы проверить detached подпись нам необходимо доработать библиотеку. Точных сроков не могу сказать.

maximka написал:
Нет других альтернатив, более элегантного способа?

На данный момент нет.

maximka написал:
И ещё один вопрос: можно ли вообще создавать свои сертификаты через библиотеку?

Нет.
Модератор
  • Страница:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
FaLang translation system by Faboba