Одна очевидная вещь бросается в глаза: вы говорите, что ваш сертификат в формате DER, но вы передаете format=0
в load_cert()
, что означает PEM. См. Переменные модуля X509 . Возможно, не в том, что является причиной вашей проблемы (хотя я ожидаю, что вы получите исключение, если смешаете тип сертификата).
Обновление Подумав еще немного, я думаю, что вы пытаетесь сделать что-то не то здесь, вот почему это происходит сбой (хотя, конечно, он не должен падать, но вызывает исключение). Вы не можете подписать сообщение, используя открытый ключ из сертификата. Это было бы похоже на цифровую подделку.
Думайте об этом так. Вы получите мой сертификат, который содержит мой открытый ключ. Вы можете использовать открытый ключ, чтобы зашифровать мне сообщение. Только я смогу расшифровать, используя мой закрытый ключ. Вы можете подписать сообщение с помощью вашего личного ключа , а я могу использовать ваш открытый ключ для проверки вашей подписи.