tokenifier 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,30 +1,56 @@
1
1
  # Tokenifier
2
2
 
3
3
  Tokenifier is a Gibberish gem wrapper.
4
- It provides an approach to encrypt and decrypt structures like Strings, Hashes.
4
+ It provides an approach to encrypt and decrypt structures like Numeric, String and Hash.
5
+
6
+ [![Build Status](https://secure.travis-ci.org/ludo/tokenifier.png)](http://travis-ci.org/ludo/tokenifier)
7
+
5
8
 
6
9
  ## Installation
7
10
 
11
+ Install the gem
12
+
13
+ gem install tokenifier
14
+
15
+ Tokenifier will install gibberish the gem as dependency
16
+
17
+ require "tokenifier"
18
+
19
+ Thats it.
20
+
21
+
22
+
23
+ ## Rails
24
+
8
25
  Put the string into Gemfile
9
26
 
10
- gem "tokenifier"
27
+ gem "tokenifier", "~> 0.1"
28
+
29
+ Run tokenifier:install generator
11
30
 
12
- Add config/tokenifier.yml in rails application
31
+ rails g tokenifier:install
32
+
33
+ Rails generator will create config/tokenifier.yml with unique secret strings.
13
34
 
14
35
  development:
15
36
  secret: 7e991d82a0dd42b0afa293a339308c6f
16
37
 
38
+ You have to use a permanent secret string to decrypt tokens.
39
+ If no secret defined for environment Tokenifier uses random secret string each execution time.
40
+
41
+
42
+
17
43
  ## Usage
18
44
 
19
- To encrypt data into hash
45
+ To encrypt data
20
46
 
21
- Tokenifier.encrypt("string") # =>
22
- Tokenifier.encrypt(:key => 'value') # =>
47
+ Tokenifier.encrypt("string") # => "U2FsdGVkX1+YHpkTh..."
48
+ Tokenifier.encrypt(:key => 'value') # => "U2FsdGVkX18ts+aRd..."
23
49
 
24
- To decrypt data into hash
50
+ To decrypt data
25
51
 
26
- Tokenifier.decrypt(" ...") # =>
27
- Tokenifier.decrypt(" ...") # =>
52
+ Tokenifier.decrypt("U2FsdGVkX1+...") # => "string"
53
+ Tokenifier.decrypt("U2FsdGVkX18...") # => {"key" => "value"}
28
54
 
29
55
  Errors handling
30
56
 
@@ -33,12 +59,14 @@ Errors handling
33
59
 
34
60
  Tokenifier.decrypt("malformed hash") # => raises Tokenifier::Error
35
61
 
36
- Using custom secret
62
+ Custom secret usage
37
63
 
38
64
  data = Tokenifier.encrypt("string", :secret => 'secret')
39
65
  Tokenifier.decrypt(data, :secret => 'secret') # => "string"
40
66
  Tokenifier.decrypt(data) # => raises Tokenifier::Error, "Got a malformed string"
41
67
 
68
+
69
+
42
70
  ## CLI usage
43
71
 
44
72
  Usage:
@@ -51,8 +79,8 @@ Commands:
51
79
  e|encrypt - Does data encryption of any string data
52
80
  d|decrypt - Does data decryption from hashed data.
53
81
 
54
- NOTE: You have to use permanent secret to decryption data.
55
- Tokinifier generates dafult secret each execution time.
82
+ NOTE: You have to use a permanent secret to decrypt a data.
83
+ Tokinifier generates random secret string each execution time instead.
56
84
 
57
85
  Examples:
58
86
 
@@ -1,8 +1,12 @@
1
+ require 'yaml'
2
+
1
3
  module Tokenifier
2
4
  module Cipher
3
5
 
4
6
  def secret
5
- @secret ||= Tokenifier::Rails.secret || Tokenifier::Random.secret
7
+ @secret ||= load_rails_secret
8
+ @secret ||= Tokenifier::Random.secret
9
+ @secret
6
10
  end
7
11
 
8
12
  def cipher(*args, &block)
@@ -10,5 +14,32 @@ module Tokenifier
10
14
  block_given? ? yield(aes) : aes
11
15
  end
12
16
 
17
+ def load_rails_secret
18
+ return unless defined?(Rails)
19
+
20
+ filename = Rails.root.join('config', 'tokenifier.yml')
21
+
22
+ puts filename
23
+
24
+ if File.exists?(filename)
25
+ config = YAML.load(
26
+ ERB.new(
27
+ IO.read(filename)
28
+ ).result
29
+ )[Rails.env]
30
+
31
+ @secret = config['secret']
32
+ else
33
+ @secret = Tokenifier::Random.secret
34
+
35
+ Rails.logger.warn "*** Tokenifier warning:"
36
+ Rails.logger.warn "*** Config tokenifier.yml file not found."
37
+ Rails.logger.warn "*** Run rails g tokenifier:install to generate one"
38
+ Rails.logger.warn "*** Using secret: #{@secret}"
39
+ end
40
+
41
+ @secret
42
+ end
43
+
13
44
  end
14
45
  end
@@ -14,24 +14,24 @@ module Tokenifier
14
14
 
15
15
  Usage:
16
16
 
17
- tokenifier [options] COMMAND 'custom string'
17
+ tokenifier [options] COMMAND 'custom string'
18
18
 
19
19
  Commands:
20
20
 
21
- s|secret - Generates secret string
22
- e|encrypt - Does data encryption of any string data
23
- d|decrypt - Does data decryption from hashed data.
21
+ s|secret - Generates secret string
22
+ e|encrypt - Does data encryption of any string data
23
+ d|decrypt - Does data decryption from hashed data.
24
24
 
25
- NOTE: You have to use permanent secret to decryption data.
26
- Tokinifier generates dafult secret each execution time.
25
+ NOTE: You have to use a permanent secret to decrypt a data.
26
+ Tokinifier generates random secret string each execution time instead.
27
27
 
28
28
  Examples:
29
29
 
30
- tokenifier encrypt "CUSTOM DATA"
31
- tokenifier decrypt "CUSTOM DATA"
30
+ tokenifier encrypt "CUSTOM DATA"
31
+ tokenifier decrypt "CUSTOM DATA"
32
32
 
33
- tokenifier --secret MYSECRET e "CUSTOM DATA"
34
- tokenifier --secret MYSECRET d "ENCRYPTED DATA"
33
+ tokenifier --secret MYSECRET e "CUSTOM DATA"
34
+ tokenifier --secret MYSECRET d "ENCRYPTED DATA"
35
35
 
36
36
 
37
37
  USAGE
@@ -1,3 +1,3 @@
1
1
  module Tokenifier
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/tokenifier.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'gibberish'
2
2
  require 'tokenifier/error'
3
3
  require 'tokenifier/random'
4
- require 'tokenifier/rails'
5
4
  require 'tokenifier/cipher'
6
5
  require 'tokenifier/encrypt'
7
6
  require 'tokenifier/decrypt'
data/spec/cipher_spec.rb CHANGED
@@ -48,4 +48,28 @@ describe Tokenifier::Cipher do
48
48
 
49
49
  end
50
50
 
51
+ describe ".load_rails_secret" do
52
+
53
+ let(:rails) { Class.new }
54
+
55
+ before {
56
+ rails.stub_chain(:root, :join).and_return(File.expand_path('../support/config/tokenifier.yml', __FILE__))
57
+ rails.stub_chain(:logger).and_return(mock(:logger, :warn => nil))
58
+ rails.stub(:env).and_return('test')
59
+ }
60
+
61
+ specify {
62
+ with_stub_const(:Rails, rails) do
63
+ subject.load_rails_secret.should == 'aaabbbccc'
64
+ end
65
+ }
66
+
67
+ specify {
68
+ without_const(:Rails) do
69
+ subject.load_rails_secret.should_not == 'aaabbbccc'
70
+ end
71
+ }
72
+
73
+ end
74
+
51
75
  end
data/spec/encrypt_spec.rb CHANGED
@@ -22,14 +22,12 @@ describe Tokenifier::Encrypt do
22
22
 
23
23
  context "a few key-value pairs" do
24
24
  let(:hsh) { {:a => 2, :b => 'string 123', :c => true} }
25
- let(:expected) { "c:true#a:2#b:string 123" }
25
+ let(:expected) { "a:2#b:string 123#c:true" }
26
26
  specify { packed.should == expected }
27
27
  end
28
28
 
29
29
  context "we are not supporting nested hashes yet due simplicity of solution" do
30
- let(:hsh) { {:a => 2, :b => 'string 123', :sub => { :a => 33 } } }
31
- let(:expected) { "sub:a33#a:2#b:string 123" }
32
- specify { packed.should == expected }
30
+ pending
33
31
  end
34
32
 
35
33
  end
data/spec/spec_helper.rb CHANGED
@@ -1 +1,34 @@
1
- require 'tokenifier'
1
+ require 'tokenifier'
2
+
3
+ def without_const(const)
4
+ if Object.const_defined?(const)
5
+ begin
6
+ @const = const
7
+ Object.send(:remove_const, const)
8
+ yield
9
+ ensure
10
+ Object.const_set(const, @const)
11
+ end
12
+ else
13
+ yield
14
+ end
15
+ end
16
+
17
+ def with_stub_const(const, value)
18
+ if Object.const_defined?(const)
19
+ begin
20
+ @const = const
21
+ Object.const_set(const, value)
22
+ yield
23
+ ensure
24
+ Object.const_set(const, @const)
25
+ end
26
+ else
27
+ begin
28
+ Object.const_set(const, value)
29
+ yield
30
+ ensure
31
+ Object.send(:remove_const, const)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,2 @@
1
+ test:
2
+ secret: aaabbbccc
@@ -25,8 +25,4 @@ describe Tokenifier do
25
25
  specify { data.should == decrypted }
26
26
  end
27
27
 
28
- context "rails support" do
29
-
30
- end
31
-
32
28
  end
data/tokenifier.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- require 'lib/tokenifier/version'
1
+ require File.expand_path('../lib/tokenifier/version', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'tokenifier'
metadata CHANGED
@@ -1,63 +1,47 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tokenifier
3
- version: !ruby/object:Gem::Version
4
- hash: 29
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Dmtiry Larkin
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-12-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-12-23 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: gibberish
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70275141515140 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 11
29
- segments:
30
- - 1
31
- - 2
32
- version: "1.2"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rspec
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70275141515140
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70275141514640 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 23
44
- segments:
45
- - 2
46
- - 6
47
- - 0
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
48
32
  version: 2.6.0
49
33
  type: :development
50
- version_requirements: *id002
51
- description: Tokenifier is a Gibberish gem wrapper. It provides an aproach to encrypt and decrypt structures like Strings, Hashes.
52
- email:
34
+ prerelease: false
35
+ version_requirements: *70275141514640
36
+ description: Tokenifier is a Gibberish gem wrapper. It provides an aproach to encrypt
37
+ and decrypt structures like Strings, Hashes.
38
+ email:
53
39
  - dmitry.larkin@gmail.com
54
- executables:
40
+ executables:
55
41
  - tokenifier
56
42
  extensions: []
57
-
58
43
  extra_rdoc_files: []
59
-
60
- files:
44
+ files:
61
45
  - lib/generators/tokenifier/install/install_generator.rb
62
46
  - lib/generators/tokenifier/install/templates/config/tokenifier.yml.erb
63
47
  - lib/generators/tokenifier/install/USAGE
@@ -66,7 +50,6 @@ files:
66
50
  - lib/tokenifier/decrypt.rb
67
51
  - lib/tokenifier/encrypt.rb
68
52
  - lib/tokenifier/error.rb
69
- - lib/tokenifier/rails.rb
70
53
  - lib/tokenifier/random.rb
71
54
  - lib/tokenifier/version.rb
72
55
  - lib/tokenifier.rb
@@ -75,6 +58,7 @@ files:
75
58
  - spec/encrypt_spec.rb
76
59
  - spec/random_spec.rb
77
60
  - spec/spec_helper.rb
61
+ - spec/support/config/tokenifier.yml
78
62
  - spec/tekenifier_spec.rb
79
63
  - bin/tokenifier
80
64
  - Rakefile
@@ -82,41 +66,33 @@ files:
82
66
  - tokenifier.gemspec
83
67
  homepage: https://github.com/ludo/tokenifier
84
68
  licenses: []
85
-
86
69
  post_install_message:
87
70
  rdoc_options: []
88
-
89
- require_paths:
71
+ require_paths:
90
72
  - lib
91
- required_ruby_version: !ruby/object:Gem::Requirement
73
+ required_ruby_version: !ruby/object:Gem::Requirement
92
74
  none: false
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- hash: 3
97
- segments:
98
- - 0
99
- version: "0"
100
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
80
  none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
109
85
  requirements: []
110
-
111
86
  rubyforge_project:
112
87
  rubygems_version: 1.8.10
113
88
  signing_key:
114
89
  specification_version: 3
115
90
  summary: Tokenifier Gem
116
- test_files:
91
+ test_files:
117
92
  - spec/cipher_spec.rb
118
93
  - spec/decrypt_spec.rb
119
94
  - spec/encrypt_spec.rb
120
95
  - spec/random_spec.rb
121
96
  - spec/spec_helper.rb
97
+ - spec/support/config/tokenifier.yml
122
98
  - spec/tekenifier_spec.rb
@@ -1,18 +0,0 @@
1
- if env_caller
2
- require 'rails'
3
-
4
- Rails.logger.info "I am required in rails"
5
-
6
- filename = File.expand_path(env_caller + "/../../config/tokenifier.yml")
7
-
8
- if File.exists?(filename)
9
- Rails.logger.info YAML::load(
10
- ERB.new(
11
- IO.read(filename)
12
- ).result
13
- )[Rails.env].inspect
14
- else
15
- Rails.logger.info "Config file not found"
16
- end
17
-
18
- end