|
CryptoPro CAdES API. Public API. |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectru.CryptoPro.CAdES.CAdESSignature
public class CAdESSignature
Класс создания, проверки, декодирования и усовершенствования подписи CAdES. Поддерживаемые виды подписей: CAdES-BES и CAdES-X Long Type 1.
Constructor Summary | |
---|---|
CAdESSignature()
Конструктор. |
|
CAdESSignature(boolean detached)
Конструктор. |
|
CAdESSignature(byte[] cms,
byte[] data,
java.lang.Integer stype)
Конструктор. |
Method Summary | |
---|---|
void |
addSigner(java.security.PrivateKey p_key,
java.util.Collection<java.security.cert.X509Certificate> chain,
java.lang.Integer s_type,
java.lang.String tsaUrl)
Добавление подписи в формируемое подписанное сообщение. |
void |
addSigner(java.security.PrivateKey p_key,
java.util.Collection<java.security.cert.X509Certificate> chain,
java.lang.Integer s_type,
java.lang.String tsaUrl,
boolean countersignature)
Добавление подписи в формируемое подписанное сообщение. |
void |
addSigner(java.lang.String provider,
java.lang.String hashAlg,
java.lang.String encAlg,
java.security.PrivateKey p_key,
java.util.Collection<java.security.cert.X509Certificate> chain,
java.lang.Integer s_type,
java.lang.String tsaUrl,
boolean countersignature)
Добавление подписи в формируемое подписанное сообщение. |
void |
addSigner(java.lang.String provider,
java.lang.String hashAlg,
java.lang.String encAlg,
java.security.PrivateKey p_key,
java.util.Collection<java.security.cert.X509Certificate> chain,
java.lang.Integer s_type,
java.lang.String tsaUrl,
boolean countersignature,
org.bouncycastle.asn1.cms.AttributeTable signedAttributes,
org.bouncycastle.asn1.cms.AttributeTable unsignedAttributes)
Добавление подписи в формируемое подписанное сообщение. |
void |
clear()
Очистка списка подписантов, обновление генератора подписи. |
CAdESSigner |
getCAdESSignerInfo(int index)
Получение i-го подписанта из списка подписантов. |
CAdESSigner[] |
getCAdESSignerInfos()
Получение списка имеющихся подписантов. |
org.bouncycastle.cms.CMSSignedData |
getSignedData()
Получение сформированной или декодированной подписи. |
void |
setCertificateStore(org.bouncycastle.util.CollectionStore store)
Функция задания списка сертификатов, который следует поместить в подпись при ее формировании. |
void |
setCRLStore(org.bouncycastle.util.CollectionStore store)
Функция задания списка СОС, который следует поместить в подпись при ее формировании. |
byte[] |
sign(byte[] data)
Создание CAdES подписи данных data. |
void |
verify(java.util.Collection<java.security.cert.X509Certificate> addCerts)
Проверка всех подписей. |
void |
verify(java.util.Collection<java.security.cert.X509Certificate> addCerts,
java.util.Collection<java.security.cert.X509CRL> addCrls)
Проверка всех подписей. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public CAdESSignature(byte[] cms, byte[] data, java.lang.Integer stype) throws CAdESException
Пример находится в samples.jar/CAdES.EnhanceExample. // Исходная CAdES-BES подпись. byte[] cadesCms = ...; // Цепочка сертификатов подписи. Collectionchain = ...; // Декодируем и проверяем совмещенную CAdES-BES подпись. CAdESSignature cadesSignature = new CAdESSignature(cadesCms, null, CAdESType.CAdES_BES); cadesSignature.verify(chain); CMSSignedData srcSignedData = cadesSignature.getSignedData(); // Получаем отдельного подписанта. CAdESSigner srcSigner = cadesSignature.getCAdESSignerInfo(0); // Усовершенствуем подпись отдельного подписанта до CAdES-X Long Type 1. srcSigner.enhance(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID, chain, "http://www.cryptopro.ru:80/tsp/", CAdESType.CAdES_X_LONG_TYPE_1); // Получаем усовершенствованную подпись. SignerInformation enhSigner = srcSigner.getSignerInfo(); SignerInformationStore dstSignerInfoStore = new SignerInformationStore(Collections.singletonList(enhSigner)); // В исходной подписи заменяем подписанта. CMSSignedData dstSignedData = CMSSignedData.replaceSigners(srcSignedData, dstSignerInfoStore); // Усовершенствованная подпись. byte[] resultCms = dstSignedData.getEncoded(); // Декодируем усовершенствованную совмещенную CAdES-X Long Type 1 подпись. cadesSignature = new CAdESSignature(resultCms, null, CAdESType.CAdES_X_LONG_TYPE_1); // Проверяем подпись. Сертификаты не задаются, так как подпись самодостаточная. cadesSignature.verify(null);
cms
- CAdES подпись.data
- Данные, использовавшиеся для подписи. Если подпись совмещенная, то может
быть null. Если данные не заданы, то считается, что подпись совмещенная, иначе
отделенная.stype
- Тип подписи. Может быть null. Если тип null, то все
подписи, в том числе и заверяющие, будут проверены с самостоятельным
вычислением типа, иначе при проверке будет использован указанный тип.
CAdESException
public CAdESSignature(boolean detached) throws CAdESException
Пример находится в samples.jar/CAdES.SignExample. // Закрытый ключ подписи A. PrivateKey privateKeyA = ...; // Закрытый ключ подписи B. PrivateKey privateKeyB = ...; // Цепочка сертификатов подписи A. CollectionchainA = ...; // Цепочка сертификатов подписи B. Collection chainB = ...; // Создаем CAdES подпись. CAdESSignature cadesSignature = new CAdESSignature(false); // Добавляем CADES-BES подпись. cadesSignature.addSigner(privateKeyA, chainA, CAdESType.CAdES_BES, null); // Добавляем CADES-X Long Type 1 подпись. cadesSignature.addSigner(privateKeyV, chainB, CAdESType.CAdES_X_LONG_TYPE_1, "http://www.cryptopro.ru:80/tsp/"); // Данные для подписи. byte[] data = ...; // Завершаем создание и получаем подпись с двумя подписантами. byte[] cadesCms = cadesSignature.sign(data);
detached
- True, если подпись отделенная.
CAdESException
public CAdESSignature() throws CAdESException
Пример находится в samples.jar/CAdES.CountersignatureExample. // Исходная CAdES-BES подпись. byte[] cadesCms = ...; // Цепочка сертификатов подписи. Collectionchain = ...; // Декодируем и проверяем совмещенную CAdES-BES подпись. CAdESSignature cadesSignature = new CAdESSignature(cadesCms, null, CAdESType.CAdES_BES); cadesSignature.verify(chain); // Получаем заверяемую подпись. CAdESSigner srcSigner = cadesSignature.getCAdESSignerInfo(0); // Закрытый ключ заверителя. PrivateKey privateKeyC = ...; // Цепочка сертификатов заверителя. Collection chainC = ...; // Создаем заверяющую совмещенную подпись. CAdESSignature counterSignature = new CAdESSignature(); // Добавляем CAdES-X Long Type 1 подпись. counterSignature.addSigner(privateKeyC, chainC, CAdESType.CAdES_X_Long_Type_1, "http://www.cryptopro.ru:80/tsp/"); // Подписываем данные заверяемой подписи (байтовое представление поля signature заверяемой подписи). counterSignature.sign(srcSigner.getSignerInfo().getSignature()); // Получаем заверителя. CAdESSigner counterSigner = counterSignature.getCAdESSignerInfo(0); // Добавляем одного заверителя. srcSigner.addCounterSigner(counterSigner.getSignerInfo()); // Получаем измененную заверенную подпись с заверителем. SignerInformation newSigner = srcSigner.getSignerInfo(); CMSSignedData srcCMSSignedData = cadesSignature.getSignedData(); // Обновляем исходную подпись новым подписантом с заверителем. CMSSignedData dstCMSSignedData = CMSSignedData.replaceSigners(srcCMSSignedData, new SignerInformationStore(Collections.singletonList(newSigner))); // Новая подпись с заверителем. byte[] resultCms = dstCMSSignedData.getEncoded();
CAdESException
Method Detail |
---|
public void clear()
public org.bouncycastle.cms.CMSSignedData getSignedData()
public CAdESSigner getCAdESSignerInfo(int index) throws java.lang.ArrayIndexOutOfBoundsException
index
- Номер элемента.
java.lang.ArrayIndexOutOfBoundsException
public CAdESSigner[] getCAdESSignerInfos()
public void setCertificateStore(org.bouncycastle.util.CollectionStore store)
store
- Список сертификатов.public void setCRLStore(org.bouncycastle.util.CollectionStore store)
store
- Список СОС.public void addSigner(java.lang.String provider, java.lang.String hashAlg, java.lang.String encAlg, java.security.PrivateKey p_key, java.util.Collection<java.security.cert.X509Certificate> chain, java.lang.Integer s_type, java.lang.String tsaUrl, boolean countersignature, org.bouncycastle.asn1.cms.AttributeTable signedAttributes, org.bouncycastle.asn1.cms.AttributeTable unsignedAttributes) throws CAdESException
provider
- Криптопровайдер для хеширования и подписи. Если перед
вызовом данной функции было обращение к функции
CAdESConfig.setDefaultDigestSignatureProvider(String)
, то при
подписи будет использоваться провайдер, указанный в указанном поле.hashAlg
- Идентификатор алгоритма хэширования.encAlg
- Идентификатор алгоритма шифрования.p_key
- Закрытый ключ для подписания.chain
- Цепочка сертификатов подписанта. Должна содержать
как минимум один сертификат (сертификат подписи).s_type
- Тип подписи.tsaUrl
- Адрес TSA службы.countersignature
- True, если подпись заверяющая.signedAttributes
- Таблица подписанных аттрибутов для добавления
в подпись. Может быть null.unsignedAttributes
- Таблица неподписанных аттрибутов для добавления
в подпись. Может быть null.
CAdESException
public void addSigner(java.lang.String provider, java.lang.String hashAlg, java.lang.String encAlg, java.security.PrivateKey p_key, java.util.Collection<java.security.cert.X509Certificate> chain, java.lang.Integer s_type, java.lang.String tsaUrl, boolean countersignature) throws CAdESException
provider
- Криптопровайдер для хеширования и подписи. Если перед
вызовом данной функции было обращение к функции
CAdESConfig.setDefaultDigestSignatureProvider(String)
, то при
подписи будет использоваться провайдер, указанный в указанном поле.hashAlg
- Идентификатор алгоритма хэширования.encAlg
- Идентификатор алгоритма шифрования.p_key
- Закрытый ключ для подписания.chain
- Цепочка сертификатов подписанта. Должна содержать
как минимум один сертификат (сертификат подписи).s_type
- Тип подписи.tsaUrl
- Адрес TSA службы.countersignature
- True, если подпись заверяющая.
CAdESException
public void addSigner(java.security.PrivateKey p_key, java.util.Collection<java.security.cert.X509Certificate> chain, java.lang.Integer s_type, java.lang.String tsaUrl, boolean countersignature) throws CAdESException
CAdESConfig.getDefaultDigestSignatureProvider()
.
Рекомендуется использовать для добавления заверяющей подписи
CAdES-BES или CAdES-X Long Type 1.
p_key
- Закрытый ключ для подписания.chain
- Цепочка сертификатов подписанта. Должна содержать
как минимум один сертификат (сертификат подписи).s_type
- Тип подписи.tsaUrl
- Адрес TSA службы.countersignature
- True, если подпись заверяющая.
CAdESException
public void addSigner(java.security.PrivateKey p_key, java.util.Collection<java.security.cert.X509Certificate> chain, java.lang.Integer s_type, java.lang.String tsaUrl) throws CAdESException
CAdESConfig.getDefaultDigestSignatureProvider()
.
Рекомендуется использовать для добавления подписи CAdES-BES или CAdES-X
Long Type 1.
p_key
- Закрытый ключ для подписания.chain
- Цепочка сертификатов подписанта. Должна содержать
как минимум один сертификат (сертификат подписи).s_type
- Тип подписи.tsaUrl
- Адрес TSA службы.
CAdESException
public byte[] sign(byte[] data) throws CAdESException
data
- Пользовательские данные для подписи.
CAdESException
public void verify(java.util.Collection<java.security.cert.X509Certificate> addCerts) throws CAdESException
addCerts
- Дополнительные сертификаты для построения цепочек. Может быть null.
CAdESException
public void verify(java.util.Collection<java.security.cert.X509Certificate> addCerts, java.util.Collection<java.security.cert.X509CRL> addCrls) throws CAdESException
addCerts
- Дополнительные сертификаты для построения цепочек.
Может быть null.addCrls
- Списки CRL, которые могут использоваться для проверки
подписи CAdES-BES. Может быть null.
CAdESException
|
Copyright Crypto-Pro. All rights reserved. |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |