Atom Лента - Форум КриптоПро - Тема:Библиотека или мавен артефакт для генерации CAdES BES - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:BibliotekailimavenartefaktdljageneraciiCAdESBES-10:1Copyright 2024 Форум КриптоПро2024-03-29T13:42:14Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Dreamirhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=56813&name=DreamirАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Dreamirhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=56813&name=DreamirDreamirhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=56813&name=DreamirЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевDreamirhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=56813&name=DreamirЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевDreamirhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=56813&name=DreamirYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid119758:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119744#post119744"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=119741#post119741"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </div></div><br /><br />Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?</div></div><br /><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br />cadesSignature.update(<span class="highlight">digest</span>); // заранее вычисленный хеш данных<br /></div></div><br /><br />А Вы как проверяете корректность создания ЭП приведённым выше примером?<br /><br />Пытаетесь проверить ЭП к "в текстовом файле хеш"? Это неправильно.<br /><br />Нужен <u>исходный</u> документ (от которого был вычислен хеш) и сформированная ЭП (по хеш-значению).<br /><br /></td></tr></table>2020-10-15T11:42:05+03:002020-10-15T11:42:05+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119744#post119744"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=119741#post119741"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </div></div><br /><br />Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?</div></div><br /><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br />cadesSignature.update(<span class="highlight">digest</span>); // заранее вычисленный хеш данных<br /></div></div><br /><br />А Вы как проверяете корректность создания ЭП приведённым выше примером?<br /><br />Пытаетесь проверить ЭП к "в текстовом файле хеш"? Это неправильно.<br /><br />Нужен <u>исходный</u> документ (от которого был вычислен хеш) и сформированная ЭП (по хеш-значению).<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119744:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=119741#post119741"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </div></div><br /><br />Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?</td></tr></table>2020-10-15T06:23:37+03:002020-10-15T06:23:37+03:00Dreamir<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=119741#post119741"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </div></div><br /><br />Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119741:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </td></tr></table>2020-10-14T21:31:40+03:002020-10-14T21:31:40+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119696#post119696"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</div></div><br /><br />Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119740:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119739#post119739"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.</div></div><br /><br />Как пробовали?<br />Сервисы\Хеширование файлов (настройки: 1.2.643.7.1.1.2.2 GR 34.11-2012 256 (GOST R 34.11-2012 256))?</td></tr></table>2020-10-14T21:29:42+03:002020-10-14T21:29:42+03:00Андрей *<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Dreamir <a href="/forum2/default.aspx?g=posts&m=119739#post119739"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.</div></div><br /><br />Как пробовали?<br />Сервисы\Хеширование файлов (настройки: 1.2.643.7.1.1.2.2 GR 34.11-2012 256 (GOST R 34.11-2012 256))?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119739:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer_Alt" width="100%"><tr><td>Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.</td></tr></table>2020-10-14T20:51:20+03:002020-10-14T20:51:20+03:00Dreamir<table class="content postContainer_Alt" width="100%"><tr><td>Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119696:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer" width="100%"><tr><td>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</td></tr></table>2020-10-13T12:36:01+03:002020-10-13T12:36:01+03:00Dreamir<table class="content postContainer" width="100%"><tr><td>Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119398:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer_Alt" width="100%"><tr><td>Если подписывается хеш, надо указать это в конструкторе. Примерный код:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
// Инициализация.
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 подпись
</code></pre>
</div></div><br />Если надо именно INCLUDE_END_ENTITY_ONLY - только сертификат подписи включить, то можно использовать не addSigner с последним параметром true (addCertificateChain), то есть не добавлять всю цепочку, а только нужные (до addSigner):<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
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); // так можно добавить любые сертификаты
</code></pre>
</div></div></td></tr></table>2020-10-01T16:19:33+03:002020-10-01T16:19:33+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Если подписывается хеш, надо указать это в конструкторе. Примерный код:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
// Инициализация.
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 подпись
</code></pre>
</div></div><br />Если надо именно INCLUDE_END_ENTITY_ONLY - только сертификат подписи включить, то можно использовать не addSigner с последним параметром true (addCertificateChain), то есть не добавлять всю цепочку, а только нужные (до addSigner):<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
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); // так можно добавить любые сертификаты
</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119380:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Евгений Афанасьев <a href="/forum2/default.aspx?g=posts&m=119364#post119364"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте.<br />у вас готовый (заранее вычисленный) хеш в примере подписывается?</div></div><br /><br />Да, так. С сервера приходит хеш, который необходимо подписать.</td></tr></table>2020-10-01T13:24:06+03:002020-10-01T13:24:06+03:00Dreamir<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Евгений Афанасьев <a href="/forum2/default.aspx?g=posts&m=119364#post119364"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте.<br />у вас готовый (заранее вычисленный) хеш в примере подписывается?</div></div><br /><br />Да, так. С сервера приходит хеш, который необходимо подписать.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119364:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />у вас готовый (заранее вычисленный) хеш в примере подписывается?</td></tr></table>2020-10-01T09:16:42+03:002020-10-01T09:16:42+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />у вас готовый (заранее вычисленный) хеш в примере подписывается?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119355:1Библиотека или мавен артефакт для генерации CAdES BES<table class="content postContainer" width="100%"><tr><td>Подскажите пожалуйста какой аналог функции oSignedData.SignHash из плагина на java jcp?<br /><br />В частности надо повторить эту функцию из js на java:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-javascript">
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);
});
};
</code></pre>
</div></div></td></tr></table>2020-09-30T21:43:22+03:002020-09-30T21:43:22+03:00Dreamir<table class="content postContainer" width="100%"><tr><td>Подскажите пожалуйста какой аналог функции oSignedData.SignHash из плагина на java jcp?<br /><br />В частности надо повторить эту функцию из js на java:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-javascript">
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);
});
};
</code></pre>
</div></div></td></tr></table>