class DecryptedHash
Encapsulates encrypting and decrypting a hash of data. Does not store the key that is passed in.
Constants
- Lockbox
Public Class Methods
new(decrypted_hash = nil)
click to toggle source
Calls superclass method
# File lib/heroku/bouncer/decrypted_hash.rb, line 9 def initialize(decrypted_hash = nil) super replace(decrypted_hash) if decrypted_hash end
unlock(data, key)
click to toggle source
# File lib/heroku/bouncer/decrypted_hash.rb, line 14 def self.unlock(data, key) if data && data = Lockbox.new(key).unlock(data) data, digest = data.split("--") if digest == Lockbox.generate_hmac(data, key) data = data.unpack('m*').first data = Marshal.load(data) new(data) else new end else new end end
Public Instance Methods
lock(key)
click to toggle source
# File lib/heroku/bouncer/decrypted_hash.rb, line 29 def lock(key) # marshal a Hash, not a DecryptedHash data = {}.replace(self) data = Marshal.dump(data) data = [data].pack('m*') data = "#{data}--#{Lockbox.generate_hmac(data, key)}" Lockbox.new(key).lock(data) end