Sha256: 64e94e6616d0aa8cee4246b42fc417fe6b29450195de75e352ff80939f44a351

Contents?: true

Size: 672 Bytes

Versions: 1

Compression:

Stored size: 672 Bytes

Contents

require 'uri'
require 'yaml'
require 'base64url'
require 'encryptor'
require 'refcode/version'

module Refcode

  class Encoder

    attr_accessor :secret, :salt

    def initialize
      yield self if block_given?
    end

    def encode val
      Base64URL.encode(encrypt(YAML.dump(val)))
    end

    def decode val
      YAML.load(decrypt(Base64URL.decode(val)))
    end

    def encrypt val
      Encryptor.encrypt(:value => val, :key => @secret, :salt => @salt, :iv => iv)
    end

    def decrypt val
      Encryptor.decrypt(:value => val, :key => @secret, :salt => @salt, :iv => iv)
    end

    private

    def iv
      [@secret, @salt].join
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
refcode-0.0.1 lib/refcode.rb