Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

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

Цитата:
Сообщение от 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, 23:07   #6
Zxcqwe1122
Пользователь
 
Регистрация: 23.11.2018
Сообщений: 19
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование и проверка подписи для приложения сообщества PaHaNjkee PHP 2 19.12.2016 21: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