我正在处理以下列格式向公共密钥发送公钥的网络服务。
source name_of_that_file
注意N和e值用冒号分隔:'。
。我想使用OpenSSL :: PKey :: RSA来使用公钥,但它只接受DER和PEM格式证书。如何将我提供的公钥格式化为可由Ruby中的OpenSSL包装器库使用的PEM或DER格式证书?
编辑:
这个python代码基本上是我在Ruby中尝试做的事情。我正在寻找RSAPublicNumbers类的等价物。 synchronizes with
答案 0 :(得分:0)
选中base64_to_long
def generate_key_from_jwks(kid_header)
key = OpenSSL::PKey::RSA.new
exponent = kid_header['e']
modulus = kid_header['n']
key.set_key(base64_to_long(modulus), base64_to_long(exponent), nil)
end
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