楕円曲線のある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
署名して検証する部分が機能しません。
実際にファイルに署名しているのではなく、ハッシュに署名していると思います。
私は以下を試しました、そしてそれは私に望ましい出力を与えました:
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
-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
または、エンジンが必要な場合は、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
を追加します。