Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Разобрался с сертификатами, нужно было добавить в trustStore сертификат тестового сервиса сертификации https://www.cryptopro.ru/ui/ для корректной работы сервиса timestamp'ов (http://www.cryptopro.ru/tsp/). Для того, чтобы мы ему могли доверять, т.к. его сертификат наследник от сертификата тестового сервиса. Однако остался вопрос почему для одного и тогоже сообщения у меня разные подписи получились: первую плагином подписал (как в сообщении выше), вторую так: Код:
Container2012_512 container = new Container2012_512();
// Задаем провайдер подписи и хеширования Java CSP.
System.setProperty(CAdESConfig.DEFAULT_PROVIDER, "JCP");
//Включение проверки целосности по СОС
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
boolean isDetachedSign = false;
CAdESSignature cadesSignature = new CAdESSignature(isDetachedSign);
//Добавляем список сертификатов для добавления в подпись
cadesSignature.setCertificateStore(null);
//что это?
cadesSignature.setCRLStore(null);
//Здесь грузят хранилище
Collection<X509Certificate> chain = new ArrayList<>();
PrivateKey privateKey = loadConfiguration(container, chain);
// Создаем подписанта CAdES-BES.
cadesSignature.addSigner(container.resolveProvider(),
getDigestOid(privateKey),
getPublicKeyOid(privateKey),
privateKey,
chain,
CAdESType.CAdES_BES,
container.getTsaAddress(), false,
getSignedAttributes(),
getUnsignedAttributes());
// Создаем подписанта CAdES-X Long Type 1.
cadesSignature.addSigner(container.resolveProvider(),
getDigestOid(privateKey),
getPublicKeyOid(privateKey),
privateKey,
chain,
CAdESType.CAdES_X_Long_Type_1,
container.getTsaAddress(), false);
// Сохраним подпись либо в файл, либо в массив.
ByteArrayOutputStream outSignatureStream = new ByteArrayOutputStream();
cadesSignature.open(outSignatureStream);
String message = "Message";
cadesSignature.update(message.getBytes("utf8"));
// Завершаем создание подписи с двумя подписантами.
cadesSignature.close();
byte[] signedMessage = outSignatureStream.toByteArray();
outSignatureStream.close();
String signetStringBase64 = Base64.encode(signedMessage);
System.out.println("Signature: " + signetStringBase64);
Отредактировано пользователем 29 апреля 2015 г. 22:42:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
В Этой подписи у вас два подписанта (addSigner). С помощью плагина, из вашего примера, вы вроде бы только одну подпись создаете, CAdES-BES. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Кажется я понял, как они могут быть одинаковые, если там временные метки вшиты... Спасибо
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: vldpyatkov //что это? cadesSignature.setCRLStore(null);
Выдержка из CAdES-javadoc: Код:
public void setCRLStore(org.bouncycastle.util.CollectionStore store) throws CAdESException
Задание списка CRL, который следует поместить в ЭЦП при ее формировании. Хранилище сразу помещается в подпись.
Parameters:
store - Список CRL.
Throws:
CAdESException
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close