Статус: Участник
Группы: Участники
Зарегистрирован: 08.07.2020(UTC) Сообщений: 26  Откуда: Пермь
|
Подскажите пожалуйста какой аналог функции oSignedData.SignHash из плагина на java jcp? В частности надо повторить эту функцию из js на java: Код:
var signHash = function(hashToSign, currentCertificate) {
return cadesplugin.async_spawn(function*() {
var store = yield createObject("CAPICOM.Store");
var certificate = yield currentCertificate;
yield store.Open(constants.CAPICOM_CURRENT_USER_STORE, constants.CAPICOM_MY_STORE, constants.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var certificates = yield store.Certificates;
var oCertificates = yield certificates.Find(constants.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certificate.Hash);
if (yield oCertificates.Count == 0) {
throw new Error("Certificate not found");
}
var oCertificate = yield oCertificates.Item(1);
// Создаем объект CAdESCOM.HashedData
var cryptoProHashedData = yield createObject("CAdESCOM.HashedData");
var hashAlgorithm;
var certificateAlgoritmOid = yield getPublicKeyAlgoritmFromCertificate(certificate.Hash);
if (isNotRsaAlgorithmCertificate(certificateAlgoritmOid)) {
hashAlgorithm = getAlgoritmForHashSign(certificateAlgoritmOid);
}
else
{
hashAlgorithm = constants.CADESCOM_HASH_ALGORITHM_SHA1;
}
// Инициализируем объект заранее вычисленным хэш-значением
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
cryptoProHashedData.propset_Algorithm(hashAlgorithm);
cryptoProHashedData.SetHashValue(hashToSign);
var signer = yield createObject("CAdESCOM.CPSigner");
yield signer.propset_Certificate(oCertificate);
var oSignedData = yield createObject("CAdESCOM.CadesSignedData");
signer.propset_Options(constants.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY);
var sSignedMessage = yield oSignedData.SignHash(cryptoProHashedData, signer, constants.CADES_BES);
yield store.Close();
return sSignedMessage;
}).catch(function(error) {
ShowError(error.message);
});
};
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. у вас готовый (заранее вычисленный) хеш в примере подписывается? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.07.2020(UTC) Сообщений: 26  Откуда: Пермь
|
Автор: Евгений Афанасьев  Здравствуйте. у вас готовый (заранее вычисленный) хеш в примере подписывается? Да, так. С сервера приходит хеш, который необходимо подписать.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Если подписывается хеш, надо указать это в конструкторе. Примерный код: Код:
// Инициализация.
CAdESSignature cadesSignature = new CAdESSignature(true, true); // detached (отделенная) = true, useRawDigest (подписать хеш, а не исходные данные) = true
// Добавление подписанта.
cadesSignature.addSigner(
JCP.PROVIDER_NAME,
null,
null,
private_key, // закрытый ключ
certificate_chain, // цепочка сертификатов (если есть) или 1 сертификат, первый в ней - сертификат подписи
CAdESType.CAdES_BES,
null,
false,
null,
null,
null,
true // add certificate chain
);
// Подпись хеша.
ByteArrayOutputStream outSignatureStream = new ByteArrayOutputStream();
cadesSignature.open(outSignatureStream);
cadesSignature.update(digest); // заранее вычисленный хеш данных
cadesSignature.close();
// Получение подписи.
byte[] result = outSignatureStream.toByteArray(); // полученная CAdES-BES подпись
Если надо именно INCLUDE_END_ENTITY_ONLY - только сертификат подписи включить, то можно использовать не addSigner с последним параметром true (addCertificateChain), то есть не добавлять всю цепочку, а только нужные (до addSigner): Код:
Collection<X509CertificateHolder> certs = new ArrayList<X509CertificateHolder>();
for (X509Certificate cert : certificate_chain) {
certs.add(new X509CertificateHolder(cert.getEncoded()));
}
CollectionStore store = new CollectionStore(certs);
cadesSignature.setCertificateStore(store); // так можно добавить любые сертификаты
Отредактировано пользователем 1 октября 2020 г. 16:19:33(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.07.2020(UTC) Сообщений: 26  Откуда: Пермь
|
Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.07.2020(UTC) Сообщений: 26  Откуда: Пермь
|
Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,507   Сказал «Спасибо»: 554 раз Поблагодарили: 2251 раз в 1756 постах
|
Автор: Dreamir  Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю. Как пробовали? Сервисы\Хеширование файлов (настройки: 1.2.643.7.1.1.2.2 GR 34.11-2012 256 (GOST R 34.11-2012 256))? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,507   Сказал «Спасибо»: 554 раз Поблагодарили: 2251 раз в 1756 постах
|
Автор: Dreamir  Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы? Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.07.2020(UTC) Сообщений: 26  Откуда: Пермь
|
Автор: Андрей *  Автор: Dreamir  Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы? Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,507   Сказал «Спасибо»: 554 раз Поблагодарили: 2251 раз в 1756 постах
|
Автор: Dreamir  Автор: Андрей *  Автор: Dreamir  Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы? Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись? Цитата: cadesSignature.update(digest); // заранее вычисленный хеш данных
А Вы как проверяете корректность создания ЭП приведённым выше примером? Пытаетесь проверить ЭП к "в текстовом файле хеш"? Это неправильно. Нужен исходный документ (от которого был вычислен хеш) и сформированная ЭП (по хеш-значению). |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close