Como assinar digitalmente uma mensagem com M2Crypto usando as chaves dentro de um formato DER certificado

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

Pergunta

Eu estou trabalhando em um projeto de implementação de assinaturas digitais das mensagens de saída e decidiu usar M2Crypto para isso.

Eu tenho um certificado (no formato DER) a partir do qual eu extrair as chaves para assinar a mensagem.Por algum motivo que eu continuo recebendo um feio erro de falha de segmentação quando eu chamar o "sign_update" método.

Dado os exemplos anteriores eu li aqui, estou claramente faltando alguma coisa.

Aqui está o exemplo que eu estou trabalhando:

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()

Obrigado antecipadamente pela ajuda,

Pablo

Foi útil?

Solução

Uma coisa óbvia salta-me:você diz o seu certificado em formato DER, mas você está passando format=0 para load_cert() o que significa PEM.Ver X509 variáveis de módulo.Talvez não o que está causando o problema, embora (eu espero que você deseja obter uma exceção se você misturar o cert tipo).

Atualização Depois de mais alguns pensei, eu acho que você está tentando fazer a coisa errada aqui, é por isso que ele está falhando (embora, é claro, não deve falhar, mas levantar uma exceção).Você não pode assinar uma mensagem utilizando a chave pública de um certificado.Isso seria como fazer digitais falsificação.

Pense nisso desta maneira.Você receber meu certificado que contém a minha chave pública.Você pode usar a chave pública para criptografar uma mensagem para mim.Só eu serei capaz de desencriptar usando a minha chave privada.Você pode assinar a mensagem usando a sua chave privada, e eu posso usar sua chave pública para verificar a sua assinatura.

Outras dicas

Não existe um arquivo de chave privado, é por isso que trava e eu não posso assiná -lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top