我想使用openssl创建并验证签名。
我希望我的签名有十六进制输出。
这是我的代码:
#create private key
openssl ecparam -genkey -name secp256k1 -rand /dev/urandom -noout -out private.pem
#public key derivation
openssl ec -in private.pem -pubout -out public.pem
#create signature
openssl dgst -sha256 -hex -sign private.pem msg.txt > signature.hex
#check signature
openssl dgst -sha256 -verify public.pem -signature signature.hex msg.txt
我遇到了这个错误:
Error Verifying Data
4573216364:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1220:
4573216364:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:386:Type=ECDSA_SIG
如果我在创建签名时去掉-hex,它就可以工作。
$ openssl version
OpenSSL 1.0.2s 28 May 2019