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