class SecureWebToken
Constants
- CHARACTERS
- DEFAULT_OPTIONS
- VERSION
Public Class Methods
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
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
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
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
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