ezcrypter 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,3 @@
1
+ README
2
+ ========================================================================
3
+ Easy encryption - inspired by mack-encryption
@@ -0,0 +1,11 @@
1
+ require 'singleton'
2
+ require 'ezcrypto'
3
+
4
+ module EzCrypter
5
+ end
6
+
7
+ base = File.join(File.dirname(__FILE__), "ezcrypter")
8
+
9
+ Dir.glob(File.join(base, "**/*.rb")).each do |f|
10
+ require f
11
+ end
@@ -0,0 +1,37 @@
1
+ module EzCrypter # :nodoc:
2
+ # The default worker is one that is used when no other worker is specified or the
3
+ # specified worker does not exist. It uses the EzCrypto library and get's
4
+ # its secret key from configatron.default_secret_key
5
+ class DefaultWorker
6
+
7
+ def initialize(options = {})
8
+ options = {:secret_key => String.randomize_full_ascii(40), :salt => "_eat_oreos_and_be_happy"}.merge(options)
9
+ @aes_key = EzCrypto::Key.with_password(options[:secret_key], options[:salt])
10
+ end
11
+
12
+ # Encrypts a string using the EzCrypto library and the secret key found in
13
+ # configatron.default_secret_key
14
+ def ez_encrypt(x)
15
+ @aes_key.encrypt(x)
16
+ end
17
+
18
+ # Decrypts a string using the EzCrypto library and the secret key found in
19
+ # configatron.default_secret_key
20
+ def ez_decrypt(x)
21
+ @aes_key.decrypt(x)
22
+ end
23
+
24
+ # Encrypts a string using the EzCrypto library and the secret key found in
25
+ # configatron.default_secret_key
26
+ def ez_encrypt64(x)
27
+ @aes_key.encrypt64(x)
28
+ end
29
+
30
+ # Decrypts a string using the EzCrypto library and the secret key found in
31
+ # configatron.default_secret_key
32
+ def ez_decrypt64(x)
33
+ @aes_key.decrypt64(x)
34
+ end
35
+
36
+ end # DefaultWorker
37
+ end # Crypt
@@ -0,0 +1,50 @@
1
+ module EzCrypter
2
+ # A singleton class that holds/manages all the workers for the system.
3
+ #
4
+ # A worker must be defined as EzCrypter::<name>Worker and must
5
+ # define an ez_encrypt(value) method and a ez_decrypt(value) method.
6
+ #
7
+ # Example:
8
+ # class EzCrypter::ReverseWorker
9
+ # def ez_encrypt(x)
10
+ # x.reverse
11
+ # end
12
+ #
13
+ # def ez_decrypt(x)
14
+ # x.reverse
15
+ # end
16
+ # end
17
+ class Keeper
18
+ include Singleton
19
+
20
+ def initialize
21
+ @crypt_workers_cache = {}
22
+ end
23
+
24
+ # Returns a worker object to handle the encrytion/decryption.
25
+ # If the specified worker doesn't exist then EzCrypter::DefaultWorker
26
+ # is returned.
27
+ def worker(key = :default, options = {})
28
+ # Needs poor man's camelcase
29
+ if key.is_a?(Symbol)
30
+ key = key.to_s
31
+ key[0,1] = key[0,1].upcase
32
+ end
33
+ worker = @crypt_workers_cache[key.to_sym]
34
+ if worker.nil?
35
+ worker_klass = key + "Worker"
36
+ if EzCrypter.const_defined?(worker_klass)
37
+ worker = nil
38
+ worker = eval("worker = EzCrypter::#{worker_klass}.new(options)")
39
+ # puts "worker class inst #{worker.class.name}"
40
+ else
41
+ worker = EzCrypter::DefaultWorker.new(options)
42
+ # puts "worker class inst defaulted to #{worker.class.name}"
43
+ end
44
+ @crypt_workers_cache[key.to_sym] = worker
45
+ end
46
+ worker
47
+ end
48
+
49
+ end # Keeper
50
+ end # Crypt
@@ -0,0 +1,27 @@
1
+ module Kernel
2
+
3
+ # A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
4
+ # and calls the encrypt method on that worker.
5
+ def _ez_encrypt(value, worker = :default)
6
+ EzCrypter::Keeper.instance.worker(worker).ez_encrypt(value)
7
+ end
8
+
9
+ # A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
10
+ # and calls the decrypt method on that worker.
11
+ def _ez_decrypt(value, worker = :default)
12
+ EzCrypter::Keeper.instance.worker(worker).ez_decrypt(value)
13
+ end
14
+
15
+ # A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
16
+ # and calls the encrypt method on that worker.
17
+ def _ez_encrypt64(value, worker = :default)
18
+ EzCrypter::Keeper.instance.worker(worker).ez_encrypt64(value)
19
+ end
20
+
21
+ # A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
22
+ # and calls the decrypt method on that worker.
23
+ def _ez_decrypt64(value, worker = :default)
24
+ EzCrypter::Keeper.instance.worker(worker).ez_decrypt64(value)
25
+ end
26
+
27
+ end
@@ -0,0 +1,54 @@
1
+ class String
2
+
3
+ def self.randomize_full_ascii(length = 10)
4
+ unless defined?(String::RANDOM_STRING_SEED)
5
+ chars = Array.new(255,nil)
6
+ 255.times do |char|
7
+ chars[char] = (char + 1).chr
8
+ end
9
+ String.const_set('RANDOM_STRING_SEED',chars)
10
+ end
11
+ chars = String::RANDOM_STRING_SEED
12
+ new_string = ""
13
+ rand_limit = String::RANDOM_STRING_SEED.size - 1
14
+ 1.upto(length) { |i| new_string << chars[rand(rand_limit)] }
15
+ return new_string
16
+ end
17
+
18
+ # Maps to Kernel _ez_encrypt
19
+ #
20
+ # Examples:
21
+ # "Hello World".ez_encrypt
22
+ # "Hello World".ez_encrypt(:my_crypt)
23
+ def ez_encrypt(worker = :default)
24
+ _ez_encrypt(self, worker)
25
+ end
26
+
27
+ # Maps to Kernel _ez_decrypt
28
+ #
29
+ # Examples:
30
+ # some_encrypted_string.ez_decrypt
31
+ # some_encrypted_string.ez_ecrypt(:my_crypt)
32
+ def ez_decrypt(worker = :default)
33
+ _ez_decrypt(self, worker)
34
+ end
35
+
36
+ # Maps to Kernel _ez_encrypt64
37
+ #
38
+ # Examples:
39
+ # "Hello World".ez_encrypt
40
+ # "Hello World".ez_encrypt(:my_crypt)
41
+ def ez_encrypt64(worker = :default)
42
+ _ez_encrypt64(self, worker)
43
+ end
44
+
45
+ # Maps to Kernel _ez_decrypt64
46
+ #
47
+ # Examples:
48
+ # some_encrypted_string.ez_decrypt
49
+ # some_encrypted_string.ez_ecrypt(:my_crypt)
50
+ def ez_decrypt64(worker = :default)
51
+ _ez_decrypt64(self, worker)
52
+ end
53
+
54
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ezcrypter
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.2"
5
+ platform: ruby
6
+ authors:
7
+ - Tracy Flynn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-23 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ezcrypto
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: "0.7"
24
+ version:
25
+ description: "ezcrypter is derived from mack-encryption (markbates) "
26
+ email:
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README
33
+ files:
34
+ - lib/ezcrypter/default_worker.rb
35
+ - lib/ezcrypter/keeper.rb
36
+ - lib/ezcrypter/kernel.rb
37
+ - lib/ezcrypter/string.rb
38
+ - lib/ezcrypter.rb
39
+ - README
40
+ has_rdoc: true
41
+ homepage:
42
+ licenses: []
43
+
44
+ post_install_message:
45
+ rdoc_options: []
46
+
47
+ require_paths:
48
+ - lib
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.8.6
55
+ version:
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ requirements: []
63
+
64
+ rubyforge_project:
65
+ rubygems_version: 1.3.5
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: Wraps EZCrypto library with convenience methods
69
+ test_files: []
70
+