Если файл JAR имеет цифровую подпись, становится ли подпись частью файла манифеста?
JAR-файл: цифровая подпись
Ответы (2)
Почти. На самом деле подписывается не JAR-файл, а его содержимое.
Технически отдельные файлы в архиве JAR, которые должны быть подписаны, хэшируются с помощью подходящей хеш-функции (например, SHA-1). Хэш-значение указано в манифесте. Затем добавляется дополнительный файл (файл *.SF
) в каталог META-INF/
; этот файл содержит записи для каждого из подписанных файлов: каждая запись содержит хеш соответствующей записи в манифесте (так что это более или менее хеш хэша). *.SF
также содержит запись, содержащую хэш основных заголовков манифеста. Наконец, сам файл *.SF
подписывается, в результате чего создается файл *.RSA
или *.DSA
(сам в каталоге META-INF/
), который следует за CMS (ранее известный как "PKCS#7"). CMS полагается на все атрибуты сертификатов X.509.
Так что это скорее косвенно. Следует понимать, что подписываются только отдельные файлы в JAR; в данном файле JAR может быть смесь подписанных и неподписанных частей.
По-видимому, ответ положительный: «Разработчики могут подписывать файлы JAR цифровой подписью. В этом случае информация о подписи становится частью файла манифеста». (http://en.wikipedia.org/wiki/JAR_%28file_format%29 а>)