问题描述
我正在尝试使用DER编码键和openssl
(1.1.1g
)命令行执行ECDH。我的密钥看起来有效,并且可以与其他命令一起使用以及在转换为PEM时使用,但是共享机密派生失败。
我原来的DER编码键保存在名为priv_before.der
和pub_before.der
的文件中。我可以使用openssl
进行检查和转换。
使用私钥:
openssl ec -inform DER -in priv_before.der # print original key
openssl ec -inform DER -in priv_before.der -outform DER -out priv.der # read+write
openssl ec -inform DER -in priv.der # prints exact same key
使用公共密钥:
openssl ec -inform DER -pubin -in pub_before.der # print original key
openssl ec -inform DER -pubin -in pub_before.der -outform DER -out pub.der # read+write
openssl ec -inform DER -pubin -in pub.der # prints exact same key
现在,我尝试ECDH:
openssl pkeyutl -derive -keyform DER -inkey priv.der -peerform DER -peerkey pub.der -out s.bin
注意,我不是在使用原始DER文件,而是在使用openssl
本身生成的文件。
结果:
unable to load Private Key
4506650048:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:crypto/asn1/tasn_dec.c:1130:
4506650048:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:290:Type=X509_ALGOR
4506650048:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:627:Field=pkeyalg,Type=PKCS8_PRIV_KEY_INFO
4506650048:error:0D0CF0A7:asn1 encoding routines:d2i_AutoprivateKey:unsupported public key type:crypto/asn1/d2i_pr.c:109:
使用ECDH的PEM编码密钥,此方法有效。我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)