class Crumbl
Constants
- DEFAULT_ENCRYPTED_COOKIE_SALT
- DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT
- DEFAULT_ITERATIONS
- VERSION
Attributes
options[RW]
Public Class Methods
new() { |options| ... }
click to toggle source
# File lib/crumbl/base.rb, line 11 def initialize @options = {} yield @options if block_given? options[:iterations] ||= DEFAULT_ITERATIONS options[:encrypted_cookie_salt] ||= DEFAULT_ENCRYPTED_COOKIE_SALT options[:encrypted_signed_cookie_salt] ||= DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT end
Public Instance Methods
decode(cookie)
click to toggle source
# File lib/crumbl/base.rb, line 19 def decode cookie Marshal.load(Base64.decode64(cookie)) end
decrypt(cookie, secret_key_base)
click to toggle source
# File lib/crumbl/base.rb, line 28 def decrypt cookie, secret_key_base encryptor = build_message_encryptor(secret_key_base) encryptor.decrypt_and_verify(cookie) end
encode(data, key)
click to toggle source
# File lib/crumbl/base.rb, line 23 def encode data, key cookie_verifier = ActiveSupport::MessageVerifier.new(key) cookie_verifier.generate data end
encrypt(data, secret_key_base)
click to toggle source
# File lib/crumbl/base.rb, line 33 def encrypt data, secret_key_base encryptor = build_message_encryptor(secret_key_base) encryptor.encrypt_and_sign(data.to_s) end
Private Instance Methods
build_message_encryptor(secret_key_base)
click to toggle source
# File lib/crumbl/base.rb, line 40 def build_message_encryptor secret_key_base key_generator = ActiveSupport::KeyGenerator.new(secret_key_base, iterations: options[:iterations]) secret = key_generator.generate_key(options[:encrypted_cookie_salt]) sign_secret = key_generator.generate_key(options[:encrypted_signed_cookie_salt]) ActiveSupport::MessageEncryptor.new(secret, sign_secret, serializer: ActiveSupport::MessageEncryptor::NullSerializer) end