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

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline pls  
#21 Оставлено : 10 ноября 2011 г. 15:45:30(UTC)
pls

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.10.2011(UTC)
Сообщений: 74
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
похоже обнаружил причину. она в различии значения хеша открытого ключа издателя сертификата в стурктуре ответа от OCSA: BasicOCSPResponse.tbsResponseData.responses.certID.issuerKeyHash.
в моей подписи значение одно, в той что формирует КриптоАРМ и плагин - другое.
rfc:
Цитата:
CertID ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
issuerNameHash OCTET STRING, -- Hash of Issuer's DN
issuerKeyHash OCTET STRING, -- Hash of Issuers public key
serialNumber CertificateSerialNumber }

issuerNameHash is the hash of the Issuer's distinguished name. The
hash shall be calculated over the DER encoding of the issuer's name
field in the certificate being checked. issuerKeyHash is the hash of
the Issuer's public key. The hash shall be calculated over the value
(excluding tag and length) of the subject public key field in the
issuer's certificate.
The hash algorithm used for both these hashes,
is identified in hashAlgorithm. serialNumber is the serial number of
the certificate for which status is being requested.


код(формирование запроса к OCSA):
Код:
private _SeqOfRequest createRequestList(X509Certificate userCert, X509Certificate caCert) throws Exception {
		_SeqOfRequest requestList = new _SeqOfRequest(1);
		CertID certID = new CertID();
		certID.hashAlgorithm = getHashAlgId();
		certID.issuerNameHash = new Asn1OctetString(digestm(caCert.getSubjectX500Principal().getEncoded(), JCP.GOST_DIGEST_NAME));
		certID.issuerKeyHash = new Asn1OctetString(digestm(caCert.getPublicKey().getEncoded(), JCP.GOST_DIGEST_NAME));
		certID.serialNumber = new CertificateSerialNumber(userCert.getSerialNumber());

		ReqCert reqCert = new ReqCert();
		reqCert.set_certID(certID);
		requestList.elements[0] = new Request(reqCert);

		return requestList;
}
public static byte[] digestm(byte[] bytes, String digestAlgorithmName) throws Exception {
		final MessageDigest digest = MessageDigest.getInstance(digestAlgorithmName);
		digest.update(bytes);
		return digest.digest();
}
Вложение(я):
ocsp_resp.JPG (263kb) загружен 15 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Новожилова Елена  
#22 Оставлено : 10 ноября 2011 г. 16:50:36(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
В приведенной Вами цитате из RFC все написано - нужно брать только значение открытого ключа как оно лежит в сертификате издателя, без тега и длины.
Offline pls  
#23 Оставлено : 10 ноября 2011 г. 18:03:21(UTC)
pls

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.10.2011(UTC)
Сообщений: 74
Откуда: Moscow

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