Как цифровое подписать сообщение с M2Crypto, используя ключи в сертификате Der Format

StackOverflow https://stackoverflow.com/questions/2401397

Вопрос

Я работаю над проектом по реализации цифровых подписей исходящих сообщений и решил использовать для этого M2Crypto.

У меня есть сертификат (в формате der), из которого я извлекаю ключи, чтобы подписать сообщение. По какой -то причине я продолжаю получать уродливую ошибку ошибки сегментации, когда я вызываю метод «sign_update».

Учитывая предыдущие примеры, которые я прочитал здесь, я явно что -то упускаю.

Вот пример, над которым я работаю:

from M2Crypto.X509 import *

cert = load_cert( 'certificate.cer', format=1 )
Pub_key = cert.get_pubkey()
Pub_key.reset_context(md='sha1')
Pub_key.sign_init()
Pub_key.sign_update( "This should be good." )

print Pub_key.sign_final()

Заранее спасибо за помощь,

Пабло

Это было полезно?

Решение

Одна очевидная вещь прыгает на меня: вы говорите, что ваш сертификат находится в формате, но вы проходите format=0 к load_cert() что означает PEM. Видеть X509 переменные модуля. Анкет Может быть, не то, что вызывает вашу проблему, хотя (я ожидаю, что вы получите исключение, если вы смешиваете тип сертификата).

Обновлять После еще некоторых размышлений, я думаю, вы пытаетесь сделать здесь неправильную вещь, поэтому она рухнет (хотя это, конечно, не должно разбиться, но поднимает исключение). Вы не можете подписать сообщение, используя открытый ключ из сертификата. Это было бы похоже на цифровую подделку.

Подумай об этом так. Вы получаете мой сертификат, который содержит мой открытый ключ. Вы можете использовать открытый ключ, чтобы зашифровать мне сообщение. Только я смогу расшифровать, используя свой личный ключ. Вы можете подписать сообщение, используя Ваш личный ключ, и я могу использовать Ваш общедоступный ключ Чтобы проверить свою подпись.

Другие советы

Там нет отдельного файла ключа, вот почему он сбои, и я не могу подписать его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top