gitlab-org--gitlab-foss/lib/jwt/rsa_token.rb

39 lines
687 B
Ruby
Raw Normal View History

2016-05-12 13:47:55 -04:00
module JWT
2016-05-02 08:32:16 -04:00
class RSAToken < Token
attr_reader :key_file
def initialize(key_file)
super()
@key_file = key_file
end
def encoded
headers = {
kid: kid
}
JWT.encode(payload, key, 'RS256', headers)
end
private
def key_data
@key_data ||= File.read(key_file)
end
def key
@key ||= OpenSSL::PKey::RSA.new(key_data)
end
2016-05-13 17:41:30 -04:00
def public_key
key.public_key
end
2016-05-02 08:32:16 -04:00
def kid
2016-05-13 17:41:30 -04:00
fingerprint = Digest::SHA256.digest(public_key.to_der)
Base32.encode(fingerprint).split('').each_slice(4).each_with_object([]) do |slice, mem|
2016-05-02 08:32:16 -04:00
mem << slice.join
end.join(':')
end
end
end