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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline stanbel1  
#1 Оставлено : 25 декабря 2017 г. 15:09:48(UTC)
stanbel1

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

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

Сказал(а) «Спасибо»: 1 раз
День добрый!

Пытаюсь сформировать подпись pkcs7

Ошибку получаю в строке SignerInfoGenerator qq = q.build(algname1, key1, cert1);
Как я понимаю, указываю не тот идентификатор алгоритма
А вот какой правильный - прошу подсказать

Код:

        String XML="Test String";
        KeyStore hd1;
        hd1 = KeyStore.getInstance("HDImageStore");            
        hd1.load(new FileInputStream("C:\\Eclipse workspace\\trust17"), "123".toCharArray());
        PrivateKey key1;
        key1 = (PrivateKey)hd1.getKey("PK17", "123".toCharArray());
        java.security.cert.Certificate chainbog1[];
        chainbog1=hd1.getCertificateChain("PK17");
        X509Certificate cert1 = (X509Certificate)chainbog1[0];
        JcaCertStore certs1 = new JcaCertStore(Arrays.asList(chainbog1));

        CMSSignedDataGenerator    gen1 = new CMSSignedDataGenerator();

        String algname1= JCP.GOST_DIGEST_NAME;
        JcaSimpleSignerInfoGeneratorBuilder q = new JcaSimpleSignerInfoGeneratorBuilder().setProvider("JCP");
        SignerInfoGenerator qq = q.build(algname1, key1, cert1);
        gen1.addSignerInfoGenerator(qq);
        
        //gen1.addSignerInfoGenerator(new JcaSimpleSignerInfoGeneratorBuilder().setProvider("JCP").build(algname1, key1, cert1));
        gen1.addCertificates(certs1);
        CMSTypedData typeddata1 = new CMSProcessableByteArray(XML.getBytes());
        CMSSignedData signeddata1 = gen1.generate(typeddata1);
        BASE64Encoder b64encoder = new BASE64Encoder();
        String signedxml1 = b64encoder.encode(signeddata1.getEncoded());


Offline Евгений Афанасьев  
#2 Оставлено : 25 декабря 2017 г. 17:14:57(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Автор: stanbel1 Перейти к цитате

q.build(algname1, key1, cert1);

А что должно быть в указанном параметре? Идентификатор алгоритма хеширования, алгоритма подписи? OID или имя? Как их ищет BC?

Offline stanbel1  
#3 Оставлено : 25 декабря 2017 г. 17:50:33(UTC)
stanbel1

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

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

Сказал(а) «Спасибо»: 1 раз
Документация очень скудная по этому моменту

the name of the signature algorithm, те Алгоритм подписи


Чаще всего в примерах просто указана константа: "SHA1withRSA"
Offline Евгений Афанасьев  
#4 Оставлено : 25 декабря 2017 г. 18:20:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Тогда попробуйте "GOST3411withGOST3410EL", но, скорее всего, его оид; он должен быть в руководстве разработчика jcp.

Отредактировано пользователем 25 декабря 2017 г. 18:21:16(UTC)  | Причина: Не указана

Offline stanbel1  
#5 Оставлено : 26 декабря 2017 г. 14:21:36(UTC)
stanbel1

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

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

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