Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline olch  
#1 Оставлено : 19 мая 2015 г. 11:16:57(UTC)
olch

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Омцк

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Коллеги, здравствуйте!

Пытаюсь создать отсоединенную CAdES-T, полагая, что вернется как раз то, что нужно, но получаю какой-то непонятный формат, с виду в guiDumpASN похоже на подпись, но http://www.gosuslugi.ru/pgu/eds/ не переваривает - отвечает "Подлинность не подтверждена".
Можете подсказать, что делаю не так?
Цитата:
...
CAdESSignature cadesSignature = new CAdESSignature(true);
// Создаем подписанта CAdES-BES.
cadesSignature.addSigner(conf.getKeys()[0],
conf.getCertificatesChain(), CAdESType.CAdES_BES, null);
byte[] cadesCms = cadesSignature.sign(data);


Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(cadesCms);
ContentInfo сInfo = new ContentInfo();
сInfo.decode(asnBuf);
SignedData cms = (SignedData) сInfo.content;
SignerInfo signerInfo = cms.signerInfos.elements[0];
addSignatureTimeStamp(signerInfo, signerInfo.signature.toString().getBytes());

Asn1BerEncodeBuffer asnBuf2 = new Asn1BerEncodeBuffer();
сInfo.encode(asnBuf2, true);
return asnBuf2.getMsgCopy();



Цитата:

private void addSignatureTimeStamp(SignerInfo signerInfo, byte[] sign) {
TimeStampToken token = timestampData(sign).timeStampToken;
Attribute timeStamp = new Attribute(CMStools.OBJ_OID_ATTR_SIGNATURE_TIMESTAMP, new Attribute_values(1));
timeStamp.values.elements[0] = token;
signerInfo.unsignedAttrs = new UnsignedAttributes(1);
signerInfo.unsignedAttrs.elements[0] = timeStamp;
}


public TimeStampResp timestampData(byte[] signature) {

try {
final String hashAlg = TSPAlgorithms.GOST3411;
byte[] imprint = getMessageImprint(signature, hashAlg);

byte[] request = createTimestampRequest(imprint, hashAlg);

org.bouncycastle.asn1.tsp.TimeStampResp resp = getTimeStampResp(conf.getTspServerAddress(), request);
// response.validate(req);

TimeStampResp response = new TimeStampResp();
response.decode(new Asn1DerDecodeBuffer(resp.getEncoded()));
return response;
} catch (IOException | NoSuchAlgorithmException | Asn1Exception e) {
throw new ErlJCPException("Cannot obtain timestamp data", e);
}
}


private byte[] createTimestampRequest(byte[] imprint, String hashAlg) throws IOException {
TimeStampRequestGenerator reqgen = new TimeStampRequestGenerator();
BigInteger nonce = BigInteger.valueOf(System.currentTimeMillis());
// imprint - хеш данных, hashAlg - OID алгоритма хеширования
TimeStampRequest req = reqgen.generate(hashAlg, imprint, nonce);
return req.getEncoded();
}

private byte[] getMessageImprint(byte[] signature, String hashAlg)
throws NoSuchAlgorithmException {
MessageDigest messageDigest = MessageDigest.getInstance(hashAlg);
messageDigest.update(signature, 0, signature.length);
return messageDigest.digest();
}

Отредактировано пользователем 19 мая 2015 г. 11:40:17(UTC)  | Причина: ошибка в описании

Вложение(я):
data.xls (114kb) загружен 7 раз(а).
signature.txt (2kb) загружен 12 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#2 Оставлено : 19 мая 2015 г. 11:22:48(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,964
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Попробуйте декодировать отдельно исходную подпись, потом декодировать штамп, потом уже подпись со штампом.
Автор: olch Перейти к цитате

сInfo.encode(asnBuf2, true);

Попробуйте использовать Info.encode(asnBuf2).


Offline olch  
#3 Оставлено : 19 мая 2015 г. 11:33:23(UTC)
olch

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Омцк

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Поправила, это все таки похоже на подпись.. Но что-то с ней не то
Offline olch  
#4 Оставлено : 19 мая 2015 г. 11:48:03(UTC)
olch

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Омцк

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Добавила файл с данными и подпись
Offline Евгений Афанасьев  
#5 Оставлено : 19 мая 2015 г. 12:06:56(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,964
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Подпись декодируется (штамп есть). Проверить не удается, т.к. нет цепочки сертификатов.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
olch оставлено 02.06.2015(UTC)
Offline olch  
#6 Оставлено : 2 июня 2015 г. 11:05:10(UTC)
olch

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Омцк

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
В итоге заменила подпись, которую улучшаю, то есть вместо CAdES-BES взяла пример с генерацией CMS, по сути то же самое плюс цепочка сертификатов
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.