Sha256: bdfacd0878c51349e7c318fa7ba620b0f48cf96206fcd9b0f438e567377e85ec

Contents?: true

Size: 1.41 KB

Versions: 13

Compression:

Stored size: 1.41 KB

Contents

require 'aes'
require 'armor'

module CryptKeeper
  module Provider
    class AesNew
      include CryptKeeper::Helper::DigestPassphrase

      # Public: The encryption key
      attr_accessor :key

      # Public: Initializes the class
      #
      #   options - A hash of options. :key and :salt are required
      def initialize(options = {})
        @key = digest_passphrase(options[:key], options[:salt])
      end

      # Public: Encrypt a string
      #
      # Note: nil and empty strings are not encryptable with AES.
      # When they are encountered, the orignal value is returned.
      # Otherwise, returns the encrypted string
      #
      # Returns a String
      def encrypt(value)
        AES.encrypt(value, key)
      end

      # Public: Decrypt a string
      #
      # Note: nil and empty strings are not encryptable with AES (and thus cannot be decrypted).
      # When they are encountered, the orignal value is returned.
      # Otherwise, returns the decrypted string
      #
      # Returns a String
      def decrypt(value)
        AES.decrypt(value, key)
      end

      # Public: Search for a record
      #
      # record   - An ActiveRecord collection
      # field    - The field to search
      # criteria - A string to search with
      #
      # Returns an Enumerable
      def search(records, field, criteria)
        records.select { |record| record[field] == criteria }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
crypt_keeper-0.22.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.21.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.20.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.19.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.18.4 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.18.3 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.18.2 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.18.1 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.18.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.17.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.16.1 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.16.0 lib/crypt_keeper/provider/aes_new.rb
crypt_keeper-0.16.0.pre lib/crypt_keeper/provider/aes_new.rb