public class BufferedCAdESSignature
extends ru.CryptoPro.CAdES.AbstractCAdESSignature
Необходимо, чтобы: 1) был установлен JCP в JRE; 2) были установлены библиотеки AdES-core.jar и CAdES.jar; 3) были импортированы корневые сертификаты цепочек сертификатов подписи клиента, OCSP службы и службы штампов в DER-кодировке в хранилище доверенных сертификатов cacerts. Например, так: keytool -importcert -file "" -alias -keystore " /lib/security/cacerts" где keytool - утилита в папке /bin, PATH_TO_CA_CERT - путь к корневому сертификату, CERT_ALIAS - алиас сертификата для установки в хранилище (например, cryptopro_ca), PATH_TO_JRE - место установки JRE; 4) были скопированы библиотеки криптопровайдера BouncyCastle: bcpkix-jdk15on-1.60.jar и bcprov-jdk15on-1.60.jar. Ссылки на данные корневые доверенные сертификаты могут быть найдены в "Составе" клиентского сертификата, а также на сайте УЦ. Например, у тестового центра сертификации КриптоПро корневой сертификат один, его можно скачать с https://www.cryptopro.ru/certsrv/ (п. "Получить сертификат Удостоверяющего Центра или действующий список отозванных сертификатов"). Если ваш клиентский сертификат выпущен другим УЦ, то вы должны импортировать его корневой сертификат. Для включения проверки цепочки сертификатов онлайн по СОС следует задать параметр: System.setProperty("com.sun.security.enableCRLDP", "true"); или System.setProperty("com.ibm.security.enableCRLDP", "true"); В случае использования при проверке подписи валидных локальных СОС данные свойства можно не задавать. В тех случаях, когда класс CAdESSignature не используется, но предполагается применять криптопровайдер BouncyCastle и работать с ГОСТ алгоритмами, необходимо выполнить инициализацию ГОСТ алгоритмов с помощью вызова: ru.CryptoPro.CAdES.tools.Utility.initJCPAlgorithms(); Этот вызов выполняется автоматически, если используется класс CAdESSignature. До версии 2.0.39442 включительно полная проверка цепочки сертификатов оператора службы внутреннего штампа не выполнялась. В текущей версии данная проверка выполняется (для T-подписи), но может быть отключена с помощью параметра AdESUtility.PROPERTY_VALIDATE_TSP
(например, -Dru.CryptoPro.AdES.validate_tsp=false). Текущая версия также отличается более жесткой политикой в отношении наличия доказательства (CRL, OCSP) для сертификата службы штампа в усовершенствованном внутреннем штампе времени, однако в целях совместимости с предыдущими версиями проверка отключена. Она может быть включена с помощью параметраAdESUtility.PROPERTY_REQUIRE_TSP_EVIDENCE
(например, -Dru.CryptoPro.AdES.require_tsp_evidence=true). Настройка провайдера по умолчанию, используемого в CAdES, выполняется с помощьюAdESConfig
. Для включения логирования при невыясненных ошибках нужно внести в файл logging.properties JRE следующее: ... handlers=java.util.logging.ConsoleHandler ... .level= INFO ... java.util.logging.ConsoleHandler.level = FINER java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ... ru.CryptoPro.JCP.tools.JCPLogger.level = FINE ru.CryptoPro.JCP.tools.JCPLogger.handlers = java.util.logging.FileHandler В пакете tools имеется несколько классов с вспомогательными функциями. Проверку подписей типов CAdES-BES, CAdES-T и CAdES-X Long Type 1 можно выполнить с помощью библиотек cades/cadescom (http://www.cryptopro.ru/downloads#cades). Большинство файлов BouncyCastle можно найти по ссылке http://www.bouncycastle.org/latest_releases.html.
Constructor and Description |
---|
BufferedCAdESSignature()
Конструктор.
|
BufferedCAdESSignature(boolean detached)
Конструктор.
|
BufferedCAdESSignature(byte[] signature,
byte[] data,
java.lang.Integer signatureType)
Конструктор.
|
Modifier and Type | Method and Description |
---|---|
static boolean |
reloadCACerts()
Переинициализация, обновление списка доверенных корневых сертификатов путем
повторного чтения хранилища корневых сертификатов.
|
static org.bouncycastle.cms.CMSSignedData |
replaceSigners(org.bouncycastle.cms.CMSSignedData signedData,
org.bouncycastle.cms.SignerInformationStore newSignerStore)
Замена списка подписантов в CAdES подписи на новый, например, при
добавлении заверителей.
|
addSigner, addSigner, addSigner, addSigner, addSigner, addSigner, addSigner, addSigner, addSigner, addSigner, close, decode, getCAdESSignerInfo, getCAdESSignerInfos, getCertificateStore, getCrlStore, getSignedContent, open, setCertificateStore, setCRLStore, setCRLStore, setOptions, update, update, verify, verify, verify, verify
public BufferedCAdESSignature(byte[] signature, byte[] data, java.lang.Integer signatureType) throws CAdESException
signature
- CAdES подпись.data
- Данные, использовавшиеся для подписи. Если подпись
совмещенная, то может быть null. Если данные не заданы, то считается,
что подпись совмещенная, иначе отделенная.signatureType
- Тип подписи. Может быть null. Если тип null, то
все подписи, в том числе и заверяющие, будут проверены с самостоятельным
вычислением типа подписи, иначе при проверке будет использован указанный
тип.CAdESException
public BufferedCAdESSignature(boolean detached) throws CAdESException
detached
- True, если подпись отделенная.CAdESException
public BufferedCAdESSignature() throws CAdESException
CAdESException
public static org.bouncycastle.cms.CMSSignedData replaceSigners(org.bouncycastle.cms.CMSSignedData signedData, org.bouncycastle.cms.SignerInformationStore newSignerStore) throws CAdESException
signedData
- Исходная CAdES подпись, в которой следует обновить
список подписантов.newSignerStore
- Новый список подписантов, который нужно поместить в
подпись.CAdESException
public static boolean reloadCACerts()