首页 > 解决方案 > 使用 Ruby OpenSSL 从私钥获取椭圆曲线公钥

问题描述

我正在使用 Ruby 2.5.x OpenSSL 库来玩椭圆曲线。我可以使用轻松生成私钥和公钥对

curve = OpenSSL::PKey::EC.new('secp256k1')
curve.generate_key

但是给定一个私钥,我想重新生成公钥。

我知道 OpenSSL 可以做到这一点,因为命令行允许您这样做,而 Ruby 比特币项目也可以做到。但是 Ruby 比特币项目有自己的使用 FFI 的 OpenSSL 接口,而不是 Ruby 提供的接口。

Ruby 2.5.x openssl 库是否没有公开足够的 OpenSSL 接口以能够从私钥生成椭圆曲线公钥,或者它可以但没有记录?

标签: rubyopensslelliptic-curve

解决方案


如果有人也有兴趣获得 pem 格式的公钥:)

example_key = OpenSSL::PKey::EC.new('secp256k1').generate_key
puts example_key.to_pem
pkey = OpenSSL::PKey::EC.new(example_key.public_key.group)
pkey.public_key = example_key.public_key
puts pkey.to_pem

推荐阅读