我有一个公钥的内容,我将其作为输入传递给我的系统:
public_key = 'MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC/Bu9nyAtG1DQe7t7jszLb+dZ1GbXoR8G0rIXoak67NM='
我需要将其输入OpenSSL
,以便它可以参与一些 ECDH 解密。
我似乎找不到让 OpenSSL 接受上述输入的方法。
我尝试了以下方法:
OpenSSL::PKey::RSA.new public_key
OpenSSL::PKey::RSA.new "-----BEGIN PUBLIC KEY-----\n#{public_key}\n-----END PUBLIC KEY-----\n"
这两个都返回:
OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key: nested asn1 error
我可以:
OpenSSL::PKey.read "-----BEGIN PUBLIC KEY-----\n#{public_key}\n-----END PUBLIC KEY-----\n"
这不会返回错误,但是我看不到将组设置为 secp128r2 而不会引发错误的方法。
在 with 之后执行c = OpenSSL::PKey::EC.new("secp128r2")
并尝试设置密钥c.public_key = OpenSSL::PKey.read("-----BEGIN PUBLIC KEY-----\n#{public_key}\n-----END PUBLIC KEY-----\n").public_key
会引发错误:
OpenSSL::PKey::ECError: EC_KEY_set_public_key: incompatible objects