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