我有一个RSA公钥模数和指数字符串.
我想OpenSSL::PKey::RSA
从这两个字符串创建一个.
基本上他们来自:
我将如何在Ruby中执行此操作?最终目标是将其转化为JWT宝石.
我目前在Ruby 2.3.1中,所以这有效:
key = OpenSSL::PKey::RSA.new
key.e = OpenSSL::BN.new(Base64.decode64(e), 2)
key.n = OpenSSL::BN.new(Base64.decode64(n), 2)
Run Code Online (Sandbox Code Playgroud)
但是,它在升级期间不起作用.
小智 5
我以这种方式工作,基于这个 python 实现:
https://github.com/jpf/okta-jwks-to-pem/blob/master/jwks_to_pem.py
key = OpenSSL::PKey::RSA.new
exponent = kid_header['e']
modulus = kid_header['n']
# Voila !
key.set_key(base64_to_long(modulus), base64_to_long(exponent), nil)
def base64_to_long(data)
decoded_with_padding = Base64.urlsafe_decode64(data) + Base64.decode64('==')
decoded_with_padding.to_s.unpack('C*').map do |byte|
to_hex(byte)
end.join.to_i(16)
end
def to_hex(int)
int < 16 ? '0' + int.to_s(16) : int.to_s(16)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
771 次 |
最近记录: |