OpenSSL ECDSA assina e verifica o arquivo

5

Eu gostaria de assinar e verificar um pdf com curva elíptica. Eu tenho um código, mas não funciona.

Crie uma chave privada:

openssl ecparam -genkey -name secp384r1 -noout -out private.pem

Criar chave pública:

openssl ec -in private.pem -pubout -out public.pem

Assinar arquivo:

openssl dgst -ecdsa-with-SHA1 test.pdf > hash openssl dgst
openssl dgst -ecdsa-with-SHA1 -inkey private.pem -keyform PEM -in hash > signature

Verifique o arquivo:

openssl dgst -ecdsa-with-SHA1 -verify public.pem -signature signature.bin data

A parte para assinar e verificar não funciona.

    
por Michael 04.04.2014 / 09:13

3 respostas

6

Acho que você não está realmente assinando o arquivo, mas assinando o hash.

Eu tentei o seguinte e ele me deu a saída desejada:

Create signature:
openssl dgst -ecdsa-with-SHA1 -sign private.pem test.pdf > signature.bin

Verify signature:
openssl dgst -ecdsa-with-SHA1 -verify public.pem -signature signature.bin test.pdf
    
por 04.04.2014 / 11:14
3

Desde que -ecda-com-SHA1 não está no homem para dgst e não há -ecda-com-SHA256 eu recomendaria:

Sinal:

openssl dgst -sha1 -sign private.pem test.pdf > signature.bin

Verifique:

openssl dgst -sha1 -verify public.pem -signature signature.bin test.pdf
    
por 08.02.2016 / 00:48
0

Ou, se você precisar de um mecanismo, também poderá fazê-lo em uma sessão do OpenSSL:

openssl
OpenSSL> engine -vvvv -t dynamic -pre SO_PATH:someengine.so -pre ID:someengine -pre LIST_ADD:1 -pre LOAD
OpenSSL> dgst -ecdsa-with-SHA1 -out signature.bin -sign private.pem test.pdf
OpenSSL> dgst -ecdsa-with-SHA1 -verify public.pem -signature signature.bin test.pdf
O

dgst também oferece a opção -engine , mas aqui o mecanismo é carregado anteriormente. Se necessário, basta adicionar -engine someengine .

    
por 04.12.2014 / 16:32