class SecureWebToken

Constants

CHARACTERS
DEFAULT_OPTIONS
VERSION

Public Class Methods

create(payload, sig_key = nil, enc_key = nil, options = nil)
Alias for: encode
decode(payload, sig_key = nil, enc_key = nil) click to toggle source
# File lib/secure_web_token.rb, line 18
def decode(payload, sig_key = nil, enc_key = nil)
  sig_key ||= signing_key
  enc_key ||= encryption_key
  decrypted = ::JWE.decrypt(payload, enc_key)

  ::JWT.decode(decrypted, sig_key, true, algorithm: 'HS512')[0]
end
Also aliased as: read, decrypt, deflate
decrypt(payload, sig_key = nil, enc_key = nil)
Alias for: decode
default_encryption_key() click to toggle source
# File lib/secure_web_token.rb, line 29
def default_encryption_key
  if defined?(@default_enc_key) && is_present?(@default_enc_key)
    if @default_enc_key.respond_to? :call then
      get_presence(@default_enc_key.call) || gen_encryption_key
    else
      @default_enc_key
    end
  else
    gen_encryption_key
  end
end
default_encryption_key=(value_or_callable) click to toggle source
# File lib/secure_web_token.rb, line 41
def default_encryption_key=(value_or_callable)
  @default_enc_key = value_or_callable
end
default_signing_key() click to toggle source
# File lib/secure_web_token.rb, line 45
def default_signing_key
  if defined?(@default_sig_key) && is_present?(@default_sig_key)
    if @default_sig_key.respond_to? :call then
      get_presence(@default_sig_key.call) || gen_signing_key
    else
      @default_sig_key
    end
  else
    gen_signing_key
  end
end
default_signing_key=(value_or_callable) click to toggle source
# File lib/secure_web_token.rb, line 57
def default_signing_key=(value_or_callable)
  @default_sig_key = value_or_callable
end
deflate(payload, sig_key = nil, enc_key = nil)
Alias for: decode
encode(payload, sig_key = nil, enc_key = nil, options = nil) click to toggle source
# File lib/secure_web_token.rb, line 61
def encode(payload, sig_key = nil, enc_key = nil, options = nil)
  sig_key ||= signing_key
  enc_key ||= encryption_key
  options ||= encrypt_options
  encoded = ::JWT.encode(payload, sig_key, 'HS512')

  ::JWE.encrypt(encoded, enc_key, **options)
end
Also aliased as: create, encrypt, inflate
encrypt(payload, sig_key = nil, enc_key = nil, options = nil)
Alias for: encode
encrypt_options() click to toggle source
# File lib/secure_web_token.rb, line 73
def encrypt_options
  @encrypt_options ||= DEFAULT_OPTIONS
end
encrypt_options=(options) click to toggle source
# File lib/secure_web_token.rb, line 77
def encrypt_options=(options)
  @encrypt_options = (options || DEFAULT_OPTIONS)
end
encryption_key() click to toggle source
# File lib/secure_web_token.rb, line 81
def encryption_key
  @encryption_key ||= default_encryption_key
end
encryption_key=(key) click to toggle source
# File lib/secure_web_token.rb, line 85
def encryption_key=(key)
  @encryption_key = (key || gen_encryption_key)
end
gen_encryption_key() click to toggle source
# File lib/secure_web_token.rb, line 89
def gen_encryption_key
  SecureRandom.random_bytes(32)
end
gen_signing_key(length = 50) click to toggle source
# File lib/secure_web_token.rb, line 93
def gen_signing_key(length = 50)
  (0...length).map { CHARACTERS[rand(CHARACTERS.length)] }.join
end
inflate(payload, sig_key = nil, enc_key = nil, options = nil)
Alias for: encode
read(payload, sig_key = nil, enc_key = nil)
Alias for: decode
signing_key() click to toggle source
# File lib/secure_web_token.rb, line 97
def signing_key
  @signing_key ||= default_signing_key
end
signing_key=(key) click to toggle source
# File lib/secure_web_token.rb, line 101
def signing_key=(key)
  @signing_key = (key || gen_signing_key)
end

Private Class Methods

get_presence(object) click to toggle source
# File lib/secure_web_token.rb, line 120
def get_presence(object)
  if object.respond_to?(:presence)
    object.presence
  elsif is_present?(object)
    object
  end
end
is_blank?(object) click to toggle source
# File lib/secure_web_token.rb, line 106
def is_blank?(object)
  object.respond_to?(:blank?) ?
    object.blank? :
    is_empty?(object)
end
is_empty?(object) click to toggle source
# File lib/secure_web_token.rb, line 112
def is_empty?(object)
  object.respond_to?(:empty?) ? !!object.empty? : !object
end
is_present?(object) click to toggle source
# File lib/secure_web_token.rb, line 116
def is_present?(object)
  object.respond_to?(:present?) ? object.present? : !is_blank?(object)
end