c# #pdf #itext #signature #sign
#c# #PDF #itext #подпись #подписать
Вопрос:
Процедура нашей службы цифровой подписи заключается в следующем:
- Я запрашиваю OTP.
- Я получаю OTP из почтового сообщения, используя IMAP.
- Я отправляю имя пользователя, пароль, OTP и строку Base64 хэша SHA256 файла PDF.
- Служба подписи возвращает подпись (в виде строки) в формате: «Be/Xbxnm1sqwtUuJgc1MxWQIg4Z2UUkJfFXvryOXI5RkPPcGX5GesuwyCLOk7DgmiOD7qxIYYn4S0KB6KLOqybzX4I1K/0SmzxzcnjGUewzHG1T4aHXRJRqVcRBp6nXYT2mp6gdst4Ywmk6tEz6Z5z9DOmXLz8f6MKbm2YTRsdXmAvcTTjX3PbRI3YIY9k4C18xk6a6z77WB4QV/NLAJhuMh1rJRanFBImp/G29p9Yi6m1qywyWuMgOatemZLGxEH 3KBkBcC JMjE4bz/e49csKuBL4Ii3I/T30mpP7YlWxx9JJxpUyWoVn11Sdhm1qn47UYkmt5hwcpnMUIJwLxA==»
Мне удалось выполнить все вышеперечисленное с помощью POST-запросов.
Вопрос в том, как мне использовать эту подпись, чтобы окончательно подписать файл PDF?
У меня нет проблем с использованием внешних пакетов (iTextSharp, IronPDF и т. Д.).
У меня может быть доступ к цепочке сертификатов пользователя. Служба подписи отправляет 3 сертификата (основной, промежуточный, корневой) в виде строк. У меня они есть в виде файлов * .cer.
Редактировать:
В документации службы подписи упоминается «Подпись типа PADES-BASELINE-B». (https://ec.europa.eu/cefdigital/DSS/webapp-demo/doc/dss-documentation.html#_pades_visible_signature).
У меня возникли трудности на первом и последнем этапе процесса: подготовить документ (добавить строку подписи, использовать службу временных меток и вычислить правильный хэш) и, наконец, внедрить возвращенную подпись, и все это на C #.
Как я могу добиться этого, используя, скажем, iTextSharp? Я уже реализовал все остальное, почтовые вызовы, запросы OTP и т. Д.
Комментарии:
1. «PS1: у меня нет проблем с использованием внешних пакетов (IronPDF и т. Д.)». — На самом деле вам понадобится такая вещь. Но какую библиотеку PDF вы хотите использовать?
2. «Вопрос в том, как мне использовать эту подпись, чтобы окончательно подписать PDF-файл?» — это во многом зависит от библиотеки PDF, которую вы будете использовать для этой задачи
3. Как сказал @iPDFdev, детали во многом зависят от выбранной вами библиотеки (рекомендации по программному обеспечению не относятся к переполнению стека, поэтому вам придется выбирать). Однако для начала следует один пункт: вы указываете хэш SHA256 файла PDF — вы обнаружите, что хэш для отправки не является хэшем исходного PDF-файла; этот исходный PDF-файл будет сначала подготовлен (путем добавления поля подписи со значением, содержащим заполнитель для байтов подписи), и хэш для передачи будет хэшем этого подготовленного PDF-файла, за исключением заполнителя. Смотрите здесь .
4. IronPDF может работать, если возвращаемая подпись имеет формат pfx или p12 и может быть сохранена как временный файл на диске. ironpdf.com/examples/digitally-sign-a-pdf Знаете ли вы конкретный тип криптографического ключа, который возвращает ваша служба цифровой подписи? Из формата неясно: «Be /Xbxnm1 …»
5. Мне ясно, что IronPDF (и acrobat) используют файлы подписи PFX и P12 для подписи документов. Пароль не является обязательным. Данные «подписи», которые вы получаете с вашего сервера, представлены в неуказанном формате. Можете ли вы узнать, какому стандарту он соответствует, и посмотреть, возможно ли получить сертификат подписи PFX или p12?