Сделать подписанный файл из файла содержимого и его отдельной подписи?

У меня есть текстовый файл, который я назову filename.txt . Сначала я вызываю

gpg --output filename.asc --clearsign filename.txt

Подписанный файл filename.asc создается. Затем я вызываю

gpg --armor --output filename.sig --detach-sign filename.asc

Подпись извлекается из подписанного файла filename.asc и сохраняется в filename.sig .

Мой вопрос в том, можно ли каким-то образом объединить исходный неподписанный файл filename.txt и файл с защищенной подписью ASCII filename.sig , чтобы создать подписанный файл? В GPG такой функциональности не вижу, а может я чего-то не знаю? Или, может быть, это возможно с другими инструментами (обработка Java или что-то еще)?

Простое объединение этих файлов приводит к неудачной проверке подписи. В моем случае использования мне нужно подписать файл, ответить файлом подписи (без содержимого), затем я получаю отдельный файл подписи и файл conent. Мне нужно слить и зашифровать. На данный момент я не использую переключатель - отсоединить , я просто разделил подписанный файл на два файла, а затем просто объединяю их. Но когда я использую - отсоединить , меняется сигантура переключателя, и это не работает, когда я объединяю файл сигантуры с файлом содержимого. Он мог бы оставаться таким, как сейчас, но я хочу извлечь сигантуру стандартным способом, используя переключатель - отсоединить , а не просто разрезать подписанный файл на части, но тогда я не вижу возможность объединить сигантуры, экспортированные с помощью - переключатель отсоединения


В общем , вы не можете просто взять отделенную подпись и объединить ее с исходными данными для создания сообщения с четкой подписью, если вы не нормализуете ввод перед созданием подписи.

GnuPG упакует исходный текст ввода по-разному, в зависимости от типа операции (отдельная или без знака). RFC4880 раздел 7.1 отмечает это (http://tools.ietf.org/html/rfc4880#section-7.1).

Как и в случае с двоичными подписями в текстовых документах, Подпись в открытом виде рассчитывается для текста с использованием канонических окончаний строк. Окончание строки (т.е. ) перед строкой «—— BEGIN PGP SIGNATURE ——», которая завершает подписанный текст, не считается частью подписанного текста.

Итак, мы должны сначала нормализовать окончания строк входящего текста, а затем удалить последний от конца текста.

Вот пример того, как нужно изменить исходные входные данные:

gpg - броня --output filename.txt.asc --detach-sign

Это создаст отделенную подпись (filename.txt.asc) после первого преобразования концов строки (‘ $ ‘) в возврат каретки (‘ r ‘), а также удалите символы возврата каретки + перевода строки из конца ввода текста..

Теперь вы можете создать сообщение с четкой подписью из подписи (filename.txt.asc) и исходного файла (filename.txt), вот так:

gpg --verify

(вам придется заменить алгоритм хеширования — SHA1 в моем примере — тем, что вы фактически используете )

Также следует отметить —

gpg --armor --output filename.sig --detach- sign filename.asc Подпись извлекается из подписанного файла filename.asc и сохраняется в filename.sig.

При этом не извлекается никакая подпись — создается новая подпись данных в файле filename.asc (включая исходную подпись) и сохраняет их в filename.sig . Если вы передадите —clearsign вместо —detach-sign, вы поймете, что я имею в виду.

2



Как создать отдельную цифровую подпись для XML в Java

Я создал цифровую подпись с использованием файла PFX для XML-документа с помощью этого URL-адреса. Все, что я хочу знать, это как сделать это отдельной цифровой подписью, чтобы ее можно было передать в тег подписи XML? Прямо сейчас он заключен в мой XML-файл (то есть в подписи в конверте).


Используйте Google. Я нашел пример за 10 секунд.

http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/xmldsig/api/javax/xml/crypto/ doc-files/GenDetached.java

0

Оцените статью
clickpad.ru
Добавить комментарий