class Apnotic::ProviderToken
Public Class Methods
new(key, team_id, key_id)
click to toggle source
# File lib/apnotic/provider_token.rb, line 7 def initialize(key, team_id, key_id) @key = OpenSSL::PKey::EC.new(key) @team_id = team_id @key_id = key_id end
Public Instance Methods
token()
click to toggle source
# File lib/apnotic/provider_token.rb, line 13 def token [encode(header), encode(payload), encode(signature)].join(".") end
Private Instance Methods
encode(data)
click to toggle source
# File lib/apnotic/provider_token.rb, line 39 def encode(data) Base64.encode64(data).tr('+/', '-_').gsub(/[\n=]/, '') end
header()
click to toggle source
# File lib/apnotic/provider_token.rb, line 19 def header JSON.generate({ alg: "ES256", kid: @key_id }) end
payload()
click to toggle source
# File lib/apnotic/provider_token.rb, line 26 def payload JSON.generate({ iss: @team_id, iat: Time.now.to_i }) end
signature()
click to toggle source
# File lib/apnotic/provider_token.rb, line 33 def signature data = [encode(header), encode(payload)].join(".") digest = OpenSSL::Digest::SHA256.new().digest(data) @key.dsa_sign_asn1(digest) end