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

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline Dreamir  
#41 Оставлено : 30 сентября 2020 г. 21:43:22(UTC)
Dreamir

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

Группы: Участники
Зарегистрирован: 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);
        });
    };

Offline Евгений Афанасьев  
#42 Оставлено : 1 октября 2020 г. 9:16:42(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Здравствуйте.
у вас готовый (заранее вычисленный) хеш в примере подписывается?
Offline Dreamir  
#43 Оставлено : 1 октября 2020 г. 13:24:06(UTC)
Dreamir

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

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

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
у вас готовый (заранее вычисленный) хеш в примере подписывается?


Да, так. С сервера приходит хеш, который необходимо подписать.
Offline Евгений Афанасьев  
#44 Оставлено : 1 октября 2020 г. 16:15:42(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Если подписывается хеш, надо указать это в конструкторе. Примерный код:
Код:

// Инициализация.
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)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Санчир Момолдаев оставлено 01.10.2020(UTC)
Offline Dreamir  
#45 Оставлено : 13 октября 2020 г. 12:36:01(UTC)
Dreamir

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

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

Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?
Offline Dreamir  
#46 Оставлено : 14 октября 2020 г. 20:51:20(UTC)
Dreamir

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

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

Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.
Offline Андрей *  
#47 Оставлено : 14 октября 2020 г. 21:29:42(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,632
Мужчина
Российская Федерация

Сказал «Спасибо»: 346 раз
Поблагодарили: 1386 раз в 1070 постах
Автор: Dreamir Перейти к цитате
Пробовал CyptExpert использовать для проверки подписи хэш строки - не валидно. Может неправильно подготовлен пример - не понимаю.


Как пробовали?
Сервисы\Хеширование файлов (настройки: 1.2.643.7.1.1.2.2 GR 34.11-2012 256 (GOST R 34.11-2012 256))?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#48 Оставлено : 14 октября 2020 г. 21:31:40(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,632
Мужчина
Российская Федерация

Сказал «Спасибо»: 346 раз
Поблагодарили: 1386 раз в 1070 постах
Автор: Dreamir Перейти к цитате
Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?


Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением.
Техническую поддержку оказываем тут
Наша база знаний
Offline Dreamir  
#49 Оставлено : 15 октября 2020 г. 6:23:37(UTC)
Dreamir

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

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

Автор: Андрей * Перейти к цитате
Автор: Dreamir Перейти к цитате
Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?


Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением.


Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?
Offline Андрей *  
#50 Оставлено : 15 октября 2020 г. 11:42:05(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,632
Мужчина
Российская Федерация

Сказал «Спасибо»: 346 раз
Поблагодарили: 1386 раз в 1070 постах
Автор: Dreamir Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: Dreamir Перейти к цитате
Подскажите пожалуйста какой программой проверяется валидность подписи хеш строки? Можно так же CryptExpert'ом? Или что то иное? И как подготовить файлы?


Если речь про подписание хеша (инициализация хеш-значения), да, любым приложением.


Т.е. должно быть как обычно: в текстовом файле хеш, а рядом в файле.sig подпись?



Цитата:

cadesSignature.update(digest); // заранее вычисленный хеш данных


А Вы как проверяете корректность создания ЭП приведённым выше примером?

Пытаетесь проверить ЭП к "в текстовом файле хеш"? Это неправильно.

Нужен исходный документ (от которого был вычислен хеш) и сформированная ЭП (по хеш-значению).

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