tokenifier 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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