Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / КриптоПро: дешифрование / 11 сообщений из 11, страница 1 из 1
29.07.2013, 18:16:08
    #38347748
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Всем привет!

Прошу у знающих КриптоПро помощи с дешифрованием CMS-enveloped сообщения.
Для доступа к API КриптоПро использую DIGT-провайдер, для работы с CMS - BouncyCastle.
Тестовый код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Security.addProvider(new DIGTProvider());
        Security.addProvider(new BouncyCastleProvider());
        try {
            KeyStore keyStore = KeyStore.getInstance("CRYPTOPROCSPKEYSTORE", "DIGT");
            keyStore.load(new ByteArrayInputStream("CurrentUser".getBytes("UTF-8")), null);
            PrivateKey key = (PrivateKey) keyStore.getKey(KEY_ALIAS, /*KEYPASSWD.toCharArray()*/null);
            X509Certificate cert = (X509Certificate) keyStore.getCertificate(KEY_ALIAS);


            byte[] sourceBytes = readQiwiFile();
            CMSEnvelopedData enveloped = new CMSEnvelopedData(sourceBytes);

            RecipientId recId = new JceKeyTransRecipientId(cert);
            RecipientInformationStore recipients = enveloped.getRecipientInfos();
            RecipientInformation recipientInformation = recipients.get(recId);

            byte[] decryptedData = recipientInformation.getContent(new JceKeyTransEnvelopedRecipient(key));

            response.setContentType("text/plain");
            response.setCharacterEncoding("UTF-8");
            try (PrintWriter out = response.getWriter()) {
                out.println("<html>\n" +
                        "<head>\n" +
                        "    <title>TestServlet</title>\n" +
                        "</head>\n" +
                        "<body>\n" +
                        new String(decryptedData) +
                        "</body>\n" +
                        "</html>");
            }

        } catch (Exception e) {
            throw new ServletException(e);
        }
    }


При попытке получить контент получаю исключение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
java.security.NoSuchAlgorithmException: Cannot find any provider supporting 1.2.643.2.2.19
        at javax.crypto.Cipher.getInstance(Cipher.java:524)
        at org.bouncycastle.jcajce.DefaultJcaJceHelper.createCipher(Unknown Source)
        at org.bouncycastle.operator.jcajce.OperatorHelper.createAsymmetricWrapper(Unknown Source)
        at org.bouncycastle.operator.jcajce.JceAsymmetricKeyUnwrapper.generateUnwrappedKey(Unknown Source)
        at org.bouncycastle.cms.jcajce.JceKeyTransRecipient.extractSecretKey(Unknown Source)
        at org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient.getRecipientOperator(Unknown Source)
        at org.bouncycastle.cms.KeyTransRecipientInformation.getRecipientOperator(Unknown Source)
        at org.bouncycastle.cms.RecipientInformation.getContentStream(Unknown Source)
        at org.bouncycastle.cms.RecipientInformation.getContent(Unknown Source)
        at test.TestServlet.doGet(TestServlet.java:49)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
        at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
        at java.lang.Thread.run(Thread.java:722)

Что-то никаких умных мыслей в голову не приходит. Как это вылечить?
...
Рейтинг: 0 / 0
29.07.2013, 19:17:55
    #38347812
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Строка номер 49 у тебя которая?
...
Рейтинг: 0 / 0
29.07.2013, 19:42:09
    #38347849
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Спрашиваем у гугля про OID 1.2.643.2.2.19 и видим, что это ГОСТ R 34.10-2001.
Версия Bouncy Castle какая?
...
Рейтинг: 0 / 0
29.07.2013, 19:43:29
    #38347851
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Хотя можете не отвечать - у Крипто Про собственный формат ключевого контейнера и читать его может только Крипто Про JCP.
...
Рейтинг: 0 / 0
29.07.2013, 20:23:14
    #38347887
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
maytonСтрока номер 49 у тебя которая?
Код: java
1.
byte[] decryptedData = recipientInformation.getContent(new JceKeyTransEnvelopedRecipient(key));

Basil A. SidorovСпрашиваем у гугля про OID 1.2.643.2.2.19 и видим, что это ГОСТ R 34.10-2001.
Версия Bouncy Castle какая?bcXXXX-jdk16-146
Basil A. SidorovХотя можете не отвечать - у Крипто Про собственный формат ключевого контейнера и читать его может только Крипто Про JCP.Не только. Еще через TrustedJava можно получить доступ к криптохранилищу. Я простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((

Василий, может у Вам пример завалялся для КриптоПро JCP? Я их ознакомительную верисю скачал, но пример с CMS не взлетел, к сожалению...
...
Рейтинг: 0 / 0
29.07.2013, 21:18:46
    #38347927
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Пытаюсь разобраться с примерами из КриптоПро JCP.
Сразу трабла: KeyStore.getInstance("HDImageStore") - не работает. В списке зарегистрированных тоже не числится. Это так должно быть или чего заимпортил неправильно?
...
Рейтинг: 0 / 0
30.07.2013, 19:02:03
    #38349328
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
WGAЯ простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((Я повторю: максимум, что может "The Legion of the Bouncy Castle" - стандартный pem (p12). Наверное, он даже умеет генерировать ключевую пару для этого криптоконтейнера и ГОСТ-алгоритмов.
Но Крипто Про в категорической форме использует только собственный формат криптоконтейнера.
Таким образом, получается замкнутый круг: если нет Крипто Про JCP, то читать его закрытый ключ мы не можем, а если есть - то BouncyCastle просто не нужен.
...
Рейтинг: 0 / 0
30.07.2013, 22:14:52
    #38349475
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Basil A. SidorovWGAЯ простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((Я повторю: максимум, что может "The Legion of the Bouncy Castle" - стандартный pem (p12). Наверное, он даже умеет генерировать ключевую пару для этого криптоконтейнера и ГОСТ-алгоритмов.
Но Крипто Про в категорической форме использует только собственный формат криптоконтейнера.
Таким образом, получается замкнутый круг: если нет Крипто Про JCP, то читать его закрытый ключ мы не можем, а если есть - то BouncyCastle просто не нужен.ОК, понял. А что с примерами из JCP не подскажете (вопрос выше)? Почему не доступен KeyStore типа "HDImageStore"?
...
Рейтинг: 0 / 0
31.07.2013, 15:24:20
    #38350373
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
WGAПочему не доступен KeyStore типа "HDImageStore"?Вы его настроили?
Пути указали абсолютные или относительные?
Если относительные, то ваше мнение о текущем каталоге совпадает с мнением приложения?
...
Рейтинг: 0 / 0
08.08.2013, 22:30:24
    #38360261
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Basil A. SidorovWGAПочему не доступен KeyStore типа "HDImageStore"?Вы его настроили?
Пути указали абсолютные или относительные?
Если относительные, то ваше мнение о текущем каталоге совпадает с мнением приложения?Прошу прощения за долгое молчание, пришлось нав ремя крипто-про отложить.

Ответ на первый вопрос: нет, просто подключил jar-библиотеки к проекту. Как его надо настраивать? Где почитать? В офф. доке, приложенной к скачанному архиву, что-то не нашел про настройку.
При выполнении
Код: java
1.
Security.getAlgorithms("HDImageStore")

не наблюдается требуемого типа ключницы. И у меня, естественно, возникает исключение при
Код: java
1.
KeyStore.getInstance("HDImageStore")

непонятно пока...
...
Рейтинг: 0 / 0
11.08.2013, 14:34:37
    #38362268
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КриптоПро: дешифрование
Крипто Про JCP устанавливается в виде расширения и складывает свои потроха в ext.
Соответственно "просто подключить jar к проекту" недостаточно - необходимо установить в ту JRE/JDK, которую использует ваша среда для компиляции и запуска. Если я всё правильно понимаю, при этом не понадобится и подключать jar-ы.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / КриптоПро: дешифрование / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]