openssl pkeyutl派生:无法加载私钥

问题描述

我正在尝试使用DER编码键和openssl1.1.1g)命令行执行ECDH。我的密钥看起来有效,并且可以与其他命令一起使用以及在转换为PEM时使用,但是共享机密派生失败。

我原来的DER编码键保存在名为priv_before.derpub_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 (将#修改为@)