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

Уведомление

Icon
Error

24 Страницы«<21222324>
Опции
К последнему сообщению К первому непрочитанному
Offline Mogaba  
#221 Оставлено : 3 октября 2023 г. 12:39:38(UTC)
Mogaba

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

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

Автор: Андрей * Перейти к цитате
выше с вызовом, обернуть его в try:
...
except:
... получить сертификат


пробовали?


Получилось, большое спасибо!
Offline EgorKenk  
#222 Оставлено : 25 ноября 2023 г. 10:16:42(UTC)
EgorKenk

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте! Можете подсказать, есть ли пример данного кода с JS на Python с использованием библиотеки pycades?

Код:
public String signMap(Map<String, String> paramsToSign) {
        try {
            PrivateKey privateKey = getKey();
            Certificate certificate = getCert();
            StringBuilder toSign = new StringBuilder();
            for (String s : paramsToSign.values()) {
                toSign.append(s);
            }
            System.out.println("toSign:");
            System.out.println(toSign);
            byte[] data = toSign.toString().getBytes(StandardCharsets.UTF_8);
            String algorithmFromCert = certificate.getPublicKey().getAlgorithm();
            String algorithm = getAlgorithm(algorithmFromCert);
            Signature signature = Signature.getInstance(algorithm, JCP.PROVIDER_NAME);
            signature.initSign(privateKey);
            signature.update(data);

            byte[] secretBytes = signature.sign();
            return Base64.encodeBase64URLSafeString(secretBytes);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
Online Андрей *  
#223 Оставлено : 25 ноября 2023 г. 12:04:59(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2206 раз в 1721 постах
Автор: EgorKenk Перейти к цитате
Здравствуйте! Можете подсказать, есть ли пример данного кода с JS на Python с использованием библиотеки pycades?

Код:
public String signMap(Map<String, String> paramsToSign) {
        try {
            PrivateKey privateKey = getKey();
            Certificate certificate = getCert();
            StringBuilder toSign = new StringBuilder();
            for (String s : paramsToSign.values()) {
                toSign.append(s);
            }
            System.out.println("toSign:");
            System.out.println(toSign);
            byte[] data = toSign.toString().getBytes(StandardCharsets.UTF_8);
            String algorithmFromCert = certificate.getPublicKey().getAlgorithm();
            String algorithm = getAlgorithm(algorithmFromCert);
            Signature signature = Signature.getInstance(algorithm, JCP.PROVIDER_NAME);
            signature.initSign(privateKey);
            signature.update(data);

            byte[] secretBytes = signature.sign();
            return Base64.encodeBase64URLSafeString(secretBytes);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


Здравствуйте.

В примерах есть подписание



p.s.
не это js, а java

Техническую поддержку оказываем тут
Наша база знаний
Offline EgorKenk  
#224 Оставлено : 25 ноября 2023 г. 15:31:23(UTC)
EgorKenk

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Автор: EgorKenk Перейти к цитате
Здравствуйте! Можете подсказать, есть ли пример данного кода с JS на Python с использованием библиотеки pycades?

Код:
public String signMap(Map<String, String> paramsToSign) {
        try {
            PrivateKey privateKey = getKey();
            Certificate certificate = getCert();
            StringBuilder toSign = new StringBuilder();
            for (String s : paramsToSign.values()) {
                toSign.append(s);
            }
            System.out.println("toSign:");
            System.out.println(toSign);
            byte[] data = toSign.toString().getBytes(StandardCharsets.UTF_8);
            String algorithmFromCert = certificate.getPublicKey().getAlgorithm();
            String algorithm = getAlgorithm(algorithmFromCert);
            Signature signature = Signature.getInstance(algorithm, JCP.PROVIDER_NAME);
            signature.initSign(privateKey);
            signature.update(data);

            byte[] secretBytes = signature.sign();
            return Base64.encodeBase64URLSafeString(secretBytes);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


Здравствуйте.

В примерах есть подписание



p.s.
не это js, а java



Спасибо, с утра голова совсем не варит, раз перепутал Java с JS.
Не подскажите, в данном примере на Java данные не хешируются перед подписанием?
Offline EgorKenk  
#225 Оставлено : 25 ноября 2023 г. 17:46:46(UTC)
EgorKenk

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Просто в исходном коде в параметр algorithm метода Signature.getInstance(algorithm, JCP.PROVIDER_NAME) подставляется значение JCP.GOST_SIGN_2012_256_NAME. Я так думаю, что данные, передаваемые в этот метод просто подписываются, без хеширования, но до конца в этом не уверен.
Online Андрей *  
#226 Оставлено : 25 ноября 2023 г. 18:14:56(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2206 раз в 1721 постах
на выходе требуется cms (хеш, подпись, сертификат) или raw?
тогда пример выше, там алгоритм автоматически подставляется, в зависимости от сертификата.


или
rawsignature

plugin-samples-raw-signature
Техническую поддержку оказываем тут
Наша база знаний
Offline EgorKenk  
#227 Оставлено : 25 ноября 2023 г. 19:18:18(UTC)
EgorKenk

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
На выходе скорее всего требуется подпись, которая включает в себя данные о сертификате. Я так понимаю, что это cms формат, так как в raw формате нельзя получить данные о сертификате.
Я как раз таки и хотел узнать, что на выходе этой функции получается, так как это единственный пример от ЕСИА, который показывает, как подписывать данные при помощи их алгоритма подписи data hash.
Offline Mogaba  
#228 Оставлено : 2 марта 2024 г. 12:11:03(UTC)
Mogaba

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

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

Внезапно перестал работать код, который до этого прекрасно работал:

Код:
sign = open(sign_file, "rb").read()
enc_sign = base64.b64encode(sign)
signed_data = pycades.SignedData()
signed_data.Content = "Random data"

try:
	signed_data.VerifyCades(enc_sign.decode("utf-8"), pycades.CADESCOM_CADES_BES, True)
except Exception:
	pass

cert = signed_data.Signers.Item(1).Certificate


Выдает вот такое:

Код:
Traceback (most recent call last):
  File "./sign.py", line 31, in <module>
    cert = signed_data.Signers.Item(1).Certificate
Exception: Internal error. (0x800B0100)


С чем это может быть связано?
Online Андрей *  
#229 Оставлено : 2 марта 2024 г. 15:04:26(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2206 раз в 1721 постах

No signature was present in the subject. (0x800B0100)
В этом объекте нет подписи. (0x800B0100)


Смотреть, что передаётся на вход.
Проверять, на том, что ранее успешно проверялось.
Техническую поддержку оказываем тут
Наша база знаний
Offline Mogaba  
#230 Оставлено : 4 марта 2024 г. 10:01:14(UTC)
Mogaba

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

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

Автор: Андрей * Перейти к цитате

No signature was present in the subject. (0x800B0100)
В этом объекте нет подписи. (0x800B0100)


Смотреть, что передаётся на вход.
Проверять, на том, что ранее успешно проверялось.


Что я выяснил: если я в Линуксе подписываю файл в cptools, то для этих подписей код работает. А вот для тех файлов, которые нам присылают из другой организации, не работает. Хотя их подписи успешно проверяются через cryptcp.
Они каким-то другим способом могут подписывать? Но почему тогда cryptcp нормально проверяет?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
24 Страницы«<21222324>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.