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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ld401  
#1 Оставлено : 23 марта 2020 г. 10:24:13(UTC)
ld401

Статус: Новичок

Группы: Участники
Зарегистрирован: 23.03.2020(UTC)
Сообщений: 4

добрый день

у меня такая проблема

создаю подпись на java, создается без ошибок.
java кодом verify тоже без ошибок.

потом пробую verify через CSP Tools, и вот тут не проходит, ошибка.

там разные форматы что ли ? или что-то добавить надо ?
как мне сделать подпись которая бы проходила verify через CSP Tools ?

почему собственно так...
я потом отправляю подпись оператору ЭДО
так вот, подпись CSP Tools нормально принимается.
а моя подпись через JCP - тоже ошибка.
ошибка в обоих случаях, что присоединенная, что отсоединенная (мне желательно второе)


код как делаю - ниже

Код:

System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");


        byte[] dataForSign = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx"));

        KeyStore ks = KeyStore.getInstance(JCP.HD_STORE_NAME, "JCP");

        ks.load(null, null);


        PrivateKey privateKey = (PrivateKey) ks.getKey("TEST 2019-08-29T14:15:01 deec5e87bb004e77b0d2754b229cdf0d - Copy2", null);

        if(privateKey == null) {
            System.out.println("failed to get key");
        }
        System.out.println(privateKey.getAlgorithm());

        List<Certificate> certificateChain = Arrays.asList(ks.getCertificateChain("TEST 2019-08-29T14:15:01 deec5e87bb004e77b0d2754b229cdf0d - Copy2"));

        CAdESSignature cadesSignature = new CAdESSignature(true);

        cadesSignature.addSigner( JCP.PROVIDER_NAME         // provider
                , privateKey                // privateKey
                , certificateChain          // certificateChain
                , CAdESType.CAdES_BES       // signatureType
                , null                  // tsaUrl
                , false
        );                // countersignature

        // Будущая подпись в виде массива.
        ByteArrayOutputStream signatureStream = new ByteArrayOutputStream();
        cadesSignature.open(signatureStream); // подготовка контекста
        cadesSignature.update(dataForSign); // хеширование
        cadesSignature.close(); // создание подписи с выводом в signatureStream
        signatureStream.close();

        byte[] cadesCms = signatureStream.toByteArray();

        Base64 codec = new Base64();
        String encoded = codec.encodeAsString(cadesCms);

        System.out.println(encoded);

        Files.write(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx.sig2"), cadesCms);

        /**/

        byte[] data = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx"));
        byte[] sig = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx.sig2"));


        CAdESSignature signature = new CAdESSignature(sig, data, CAdESType.CAdES_BES);

        signature.verify(new HashSet(certificateChain));

Отредактировано пользователем 23 марта 2020 г. 10:24:51(UTC)  | Причина: Не указана

Offline Анатолий Беляев  
#2 Оставлено : 23 марта 2020 г. 17:21:42(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Так как мы не знаем требований ЭДО. Приложите подпись которая получается у вас и которая проходит в ЭДО на одни и те же данные. Постараемся помочь.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Евгений Афанасьев  
#3 Оставлено : 23 марта 2020 г. 20:31:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Добавлю, что, возможно, проблема в отсутствии сертификата подписи в сообщении. Добавить сертификат можно с помощью setCertificateStore или расширенного метода addSigner (см. CAdES-javadoc, описание методов и класса CAdESSignature).
Offline ld401  
#4 Оставлено : 24 марта 2020 г. 12:11:22(UTC)
ld401

Статус: Новичок

Группы: Участники
Зарегистрирован: 23.03.2020(UTC)
Сообщений: 4

Автор: Евгений Афанасьев Перейти к цитате
Добавлю, что, возможно, проблема в отсутствии сертификата подписи в сообщении. Добавить сертификат можно с помощью setCertificateStore или расширенного метода addSigner (см. CAdES-javadoc, описание методов и класса CAdESSignature).


спасибо
всё получилось



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