module ActiveCrypto::ClassMethods

Usage is very simple. You will generally only need the two class methods listed here in your ActiveRecord class model.

License

ActiveCrypto and EzCrypto are released under the MIT license.

Support

To contact the author, send mail to pelleb@gmail.com

Also see my blogs at: stakeventures.com and neubia.com

This project was based on code used in my project StakeItOut, where you can securely share web services with your partners. stakeitout.com

(C) 2005 Pelle Braendgaard

Public Instance Methods

encrypt(*attributes) click to toggle source

Turn encryption on for this record. List all encrypted attributes

class Document < ActiveRecord::Base
              encrypt :title,:body
      end

Options are:

<tt>key</tt> - to specify an external KeyHolder, which holds the key used for encrypting and decrypting
<tt>base64</tt> - set to true in order to base64 encode the encrypted attributes.  defaults to false

class Document < ActiveRecord::Base
      belongs_to :user
      encrypt :title,:body,:key=>:user, :base64 => true
end
# File lib/active_crypto.rb, line 52
      def encrypt(*attributes)        
        include ActiveCrypto::Encrypted
        before_save :encrypt_attributes
        after_save :decrypt_attributes
        options=attributes.last.is_a?(Hash) ? attributes.pop : {}
        keyholder
        if options and options[:key]
                                module_eval "                                        def session_key
                                                (send :#{options[:key]} ).send :session_key
                                        end       
                                        @@external_key=true
"                              
        end

        base64_encode = (options and options[:base64])
        module_eval <<-"end;"
          def self.ezcrypto_base64?
            #{base64_encode.to_s}
          end
        end;
        
        self.encrypted_attributes=attributes
      end
keyholder() click to toggle source

Creates support in this class for holding a key. Adds the following methods:

  • enter_password(password,salt=“onetwothree”)

  • set_session_key(key)

  • session_key

Use it as follows:

class User < ActiveRecord::Base
      has_many :documents
      keyholder
end
# File lib/active_crypto.rb, line 92
def keyholder()
  include ActiveCrypto::AssociationKeyHolder   
  after_create :save_session_key       
end