class Tokenify::Token

Attributes

encrypted[R]
plain[R]

Public Class Methods

cipher(mode, key, data, iv = nil) click to toggle source
# File lib/tokenify/token.rb, line 14
def self.cipher(mode, key, data, iv = nil)
  cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc').send(mode)
  cipher.key = Digest::SHA256.hexdigest(key)
  if iv 
    cipher.iv = iv
    cipher.update(data) << cipher.final
  else
    cipher.iv = iv = cipher.random_iv
    iv + cipher.update(data) + cipher.final
  end
end
new(secret, salt, data) click to toggle source
# File lib/tokenify/token.rb, line 8
def initialize(secret, salt, data)
  @secret = secret
  @salt = salt
  @data = data
end

Public Instance Methods

decrypt(is_encoded = true) click to toggle source
# File lib/tokenify/token.rb, line 35
def decrypt(is_encoded = true)
  decoded = is_encoded ? Base64.urlsafe_decode64(@data) : @data
  iv = decoded.slice!(0,16)
  @plain = Token.cipher(:decrypt, "#{@secret}:#{@salt}", decoded, iv)
end
encoded() click to toggle source
# File lib/tokenify/token.rb, line 31
def encoded
  Base64.urlsafe_encode64(@encrypted)
end
generate() click to toggle source
# File lib/tokenify/token.rb, line 26
def generate
  @encrypted = Token.cipher(:encrypt, "#{@secret}:#{@salt}", @data)
  self
end