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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Tylax  
#1 Оставлено : 26 мая 2023 г. 15:54:04(UTC)
Tylax

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

Группы: Участники
Зарегистрирован: 23.05.2023(UTC)
Сообщений: 1
Российская Федерация

Коллеги, приветствую!

Возникла зада подписи JSON файла. Раньше делали это с помощью утилиты cryptcp с сохранением результата файла.
Параметры вызова были такие: "cryptcp -sign -thumbprint " + thumbprint + " -detached " + fileName

Сейчас возникла необходимость подписывать своим сервисом на Java.

Для подписи использую JCSP. Подпись формируется, но по размеру она в несколько раз меньше чем та, которую делала cryptcp.
Видимо в нее не включаются атрибуты сертификата, такие как ИНН, ОГРН и т.д. А в моем случае эти атрибуты нужны и, как я понимаю, тоже должны быть подписаны.

Подскажите пожалуйста, как добавить эти атрибуты в подпись.

подписанта добавляю так:

Код:

            cadesSignature.addSigner(JCSP.PROVIDER_NAME
                    , AlgorithmUtility.keyAlgToDigestOid(key.getAlgorithm())
                    , cert.getSigAlgName()//JCP.GOST_PARAMS_EXC_2012_512_KEY_OID //AlgorithmUtility.keyAlgToKeyAlgorithmOid(certificateBank.getPublicKey().getAlgorithm())
                    , key
                    , chain
                    , CAdESType.CAdES_BES
                    , null
                    , true
                    , generateAttr()
                    , generateAttr());


для эксперимента создаю атрибуты таким образом:

Код:

private AttributeTable generateAttr() {
        Hashtable<ASN1ObjectIdentifier, org.bouncycastle.asn1.cms.Attribute> attrMap = new Hashtable<>();
        List<String> hardcodedOids = new ArrayList<>();
        hardcodedOids.add("2.5.4.3"); //CN
        hardcodedOids.add("2.5.4.4"); //SN
        hardcodedOids.add("2.23.42.2.1");//G
        hardcodedOids.add("2.5.4.12"); //
        hardcodedOids.add("1.2.643.100.4");
        hardcodedOids.add("1.2.643.100.1");
        hardcodedOids.add("1.2.840.113549.1.9.2");
        hardcodedOids.add("2.5.4.10"); //O
        hardcodedOids.add("2.5.4.11"); //OU
//        hardcodedOids.add("L");
//        hardcodedOids.add("S");
        hardcodedOids.add("2.5.4.6");//        hardcodedOids.add("C");
        hardcodedOids.add("1.2.840.113549.1.9.1"); //E

        for (String s : hardcodedOids) {
            DERBMPString at = new DERBMPString(s);
            Attribute attr = new Attribute(new ASN1ObjectIdentifier(s), new DERSet(at));
            attrMap.put(attr.getAttrType(), attr);
        }

        return new AttributeTable(attrMap);
    }


Но, по сути, все реквизиты Юрлица уже есть в сертификате.
Было бы логично каким-то образом указать какие атрибуты добавить в подпись, например перечислив OIDs.

Видимо что-то делаю не так. Уже несколько дней мучаюсь с этой темой.
Offline Евгений Афанасьев  
#2 Оставлено : 7 июня 2023 г. 20:53:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Приведите пример подписи, что и как должно быть. Размер подписи обычно отличается, если в подпись включена/не выключена цепочка сертификатов. В случае CAdES.jar цепочка по умолчанию не включается в подпись при создании CADES-BES/T. Добавить можно с помощью параметра самого длинного метода addSigner (есть версия с параметром addCertificateChain, его надо задать true), или с помощью setCertificateStore у CAdESSignature.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.