Sha256: 862abf4e518c79eeb2dea98e416a6a631e15074d9e7350e9f8da873bc807d9fa

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'jwt'
require 'openssl'

module AppStoreConnect
  class JWT
    module Utils
      # @param payload [Hash]
      # @param private_key [OpenSSL::PKey::EC]
      # @param algorithm [String]
      # @param header_fields [Hash]
      # @return [String]
      def self.encode(payload, private_key, algorithm, header_fields)
        ::JWT.encode(payload, private_key, algorithm, header_fields)
      end

      # @param token [String]
      # @param private_key [OpenSSL::PKey::EC]
      # @param algorithm [String]
      # @return [Array<Hash>]
      def self.decode(token, private_key, algorithm)
        ::JWT.decode(token, private_key, true, algorithm: algorithm)
      end

      # @param key_id [String]
      # @return [Hash]
      def self.header_fields(key_id)
        { kid: key_id }
      end

      # @param issuer_id [String]
      # @param audience [String]
      # @return [Hash]
      def self.payload(issuer_id, audience)
        {
          exp: Time.now.to_i + 20 * 60,
          iss: issuer_id,
          aud: audience
        }
      end

      # @param path [String]
      # @return [OpenSSL::PKey::EC]
      def self.private_key(path)
        OpenSSL::PKey.read(File.read(File.expand_path(path)))
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
app_store_connect_jwt-0.9.0 lib/app_store_connect/jwt/utils.rb
app_store_connect_jwt-0.8.0 lib/app_store_connect/jwt/utils.rb
app_store_connect_jwt-0.7.0 lib/app_store_connect/jwt/utils.rb
app_store_connect_jwt-0.6.0 lib/app_store_connect/jwt/utils.rb
app_store_connect_jwt-0.5.0 lib/app_store_connect/jwt/utils.rb
app_store_connect_jwt-0.4.0 lib/app_store_connect/jwt/utils.rb