web-dev-qa-db-ja.com

OpenSSL ECDSA署名と検証ファイル

楕円曲線のあるpdfに署名して検証したいと思います。コードを入手しましたが、機能しません。

秘密鍵を作成します。

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

公開鍵を作成します。

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

署名ファイル:

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

ファイルを確認:

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

署名して検証する部分が機能しません。

6
Michael

実際にファイルに署名しているのではなく、ハッシュに署名していると思います。

私は以下を試しました、そしてそれは私に望ましい出力を与えました:

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
7
mtak

-ecda-with-SHA1はdgstの人にはなく、-ecda-with-SHA256もないので、お勧めします。

サイン:

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

確認 :

openssl dgst -sha1 -verify public.pem -signature signature.bin test.pdf
3
Olivier Lasne

または、エンジンが必要な場合は、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

dgst-engineオプションも提供しますが、ここでは以前にロードされたエンジンを使用します。必要に応じて、-engine someengineを追加します。

1
lalebarde