Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Безопасность, Шифрование
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.04.2019, 13:32   #1
Zxcqwe1122
Пользователь
 
Регистрация: 23.11.2018
Сообщений: 19
Репутация: 10
По умолчанию Проверка цифровой подписи.

Нужно проверить цифровую подпись DSA.
Есть подпись, пара R S.
Есть Public Key.
Есть данные хэш-функции.

Какой библиотекой и как можно проверить эту подпись?
Желательно это сделать в Botan.
Zxcqwe1122 вне форума   Ответить с цитированием
Старый 25.04.2019, 13:43   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,697
Репутация: 2631
По умолчанию

https://botan.randombit.net/manual/p...tml#signatures
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 25.04.2019, 13:52   #3
Zxcqwe1122
Пользователь
 
Регистрация: 23.11.2018
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Этот пример уже изучил наизусть.
Но R и S это два числа по 40 байт, а в проверке используется только одно число.
Да, оно как раз 80 байт, и если из к R дописать S, то проверка не проходит.
Видать что-то не то делаю.

Последний раз редактировалось Zxcqwe1122; 25.04.2019 в 13:57.
Zxcqwe1122 вне форума   Ответить с цитированием
Старый 25.04.2019, 14:25   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,697
Репутация: 2631
По умолчанию

Вы дописываете функцией encode_fixed_length_int_pair?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 25.04.2019, 14:46   #5
Zxcqwe1122
Пользователь
 
Регистрация: 23.11.2018
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы дописываете функцией encode_fixed_length_int_pair?
Нет. Просто делаю вектор std::vector<uint8_t> и в него записываю сначала R а потом S.
Далее проверяю используя этот вектор в качестве signature.

Код:
    Botan::BigInt pENC ("0xC16CBAD34D475EC5396695D694BC8BC47E598E23B5A9D7C5CEC82D65B6827D44E95378484730C0BFF1F4CB56F47C6E51054BE89200F30D43DC4FEF9624D4665B") ;
    Botan::BigInt qENC ("0xB7B810B58C0934F642878F360B96D7CC26B53E4D") ;
    Botan::BigInt gENC ("0x4C53C726BDBFBBA6549D7E731939C6C93A869A27C5DB17BA3CAC589D7B3E003FA735F290CFD07A3EF10F35155F1A2EF70335AF7B6A5211A1103518FBA44E9718") ;
    Botan::BigInt yENC ("0x15F8A50211C234BBDF19B3CD25D14413F03DCF386FFC7357BCEE59E4EBFDB64167265E5F068247D4B50B3B867A85FB4D6E018329A993C36CFD9ABFB6ED6D29E0") ;
    Botan::DL_Group dlgroupENC (pENC, qENC, gENC);
    Botan::DSA_PublicKey dsaENC (dlgroupENC, yENC) ;

    Botan::BigInt rsENC ("0x9EE7A0CFD0CF6164861F7BDC1FA8016EE0377754457FD2A36C2B2FCFB8B009306B55C69FE7448B81") ;
    uint8_t buf [40] ;
    rsENC.binary_encode(buf);
    std::vector<uint8_t> zzzv ;
    for (int i = 0; i < 40; i++) zzzv.push_back(buf[i]);

    // verify signature
    Botan::PK_Verifier verifier(dsaENC, "EMSA1(SHA-1)");
    verifier.update(data);
   auto ts = (verifier.check_signature(zzzv)? "valid" : "invalid") ;
Zxcqwe1122 вне форума   Ответить с цитированием
Старый 26.04.2019, 12:27   #6
Oscarr
 
Регистрация: 26.04.2019
Сообщений: 5
Репутация: 10
По умолчанию

На Гитхаб поищите, там должно быть готовое решение.
Oscarr вне форума   Ответить с цитированием
Старый 27.04.2019, 00:07   #7
Zxcqwe1122
Пользователь
 
Регистрация: 23.11.2018
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Oscarr Посмотреть сообщение
На Гитхаб поищите, там должно быть готовое решение.
Да нет там готового решения. Все проще оказалось. У класса Botan::Public_Key (базовый для DSA_PublicKey) есть метод create_verification_op и через него все сделал. Он аккурат переопределен для верификации DSA.
Zxcqwe1122 вне форума   Ответить с цитированием
Старый 15.07.2019, 10:54   #8
chane
Новичок
 
Регистрация: 15.07.2019
Сообщений: 1
Репутация: 10
По умолчанию

На гитхабе нету.
chane вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование и проверка подписи для приложения сообщества PaHaNjkee PHP 2 19.12.2016 22:48
алгоритм цифровой подписи DSA ymerlа91 Общие вопросы по Java, Java SE, Kotlin 0 19.12.2013 14:27
программа формирование и проверка неквалифицированной электронной подписи ЛесенОК Помощь студентам 6 23.11.2012 12:10
Ошибка цифровой подписи при установки Solid Edge ST4 Su-34 Софт 0 02.12.2011 06:51
алгоритм цифровой подписи RSA Nin Помощь студентам 2 25.04.2011 18:58


06:25.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.