Я могу пропарсить сертификат и извлечь оттуда открытый ключ. Но попытки проверить подпись, сделанную этим сертификатом, дают отрицательный результат - значения не совпадают. Я полагаю, что это может происходить из-за:
- Неправильно извлечен ключ
- Неправильно выбраны параметры эпилептической кривой (Прогнал все возможные варианты, вряд ли оно)
- Неправильно извлечена подпись
Соответственно несколько вопросов:
- Что это за избыточные байты 04 40? Они есть во всех сертификатах, но остальные части открытых ключей разные. Нужно ли их учитывать и нужно ли дополнительно преобразовывать ключ, если он после парсинга имеет тот же вид, что и в окне на изображении:
b'\x80\x8b\x73...'
(без учета байтов 04 40)
- Длина ключа без них 64 байта, с ними - 66. В программе проверки подписи pygost ключ разбивается на 2 части, т.е. на 2 по 256 байт (в моем случае вариант ГОСТ Р 34.10-2012 256)
- Если открыть .sig файл, то самые последние его 64 байта (512 бит) и есть подпись, по идее ошибки в этом нет
Работаю с тестовыми сертификатами
https://dss.cryptopro.ru/Frontend/Certificates/List/