knife-crypt 0.0.2 → 0.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 91e0e2e5cc933ecd3ebd7aeb056ac5ff9bd2967c
4
+ data.tar.gz: 60cd25e0f6b9ffacfcc120a7595115f669ea570e
5
+ SHA512:
6
+ metadata.gz: a4d9585c880207c52f1c3254266b2610ac27d03558f6be8d21a6897eb76a0eb26ca3e4b6e547c3fe431ee134b8475606ea10915a63603d9d1f6a6cd6f935f3b4
7
+ data.tar.gz: eb6c71e619c361d55a89ab1afef71c5b1e79b1b53c828607c684ae7680da86f9a92072339d20d1665443db8ffa5974bd68a0dcc81c25737f8ab4dbb4300e89a1
data/.gitignore CHANGED
@@ -2,6 +2,7 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
+ .ruby-gemset
5
6
  .yardoc
6
7
  Gemfile.lock
7
8
  InstalledFiles
@@ -0,0 +1 @@
1
+ ruby-2.1.1
@@ -1,5 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.1
3
4
  - 1.9.3
4
- - 1.9.2
5
5
  bundler_args: --without development
6
+ gemfile:
7
+ - gemfiles/chef_10_10.gemfile
8
+ - gemfiles/chef_10_32.gemfile
9
+ - gemfiles/chef_11.gemfile
10
+ - Gemfile
@@ -1,4 +1,9 @@
1
- # ActiveAttr 0.0.2 (June 19, 2012) #
1
+ # knife-crypt 0.0.3 (May 15, 2014) #
2
+
3
+ * Improve error handling
4
+ * Add support for Chef 11 (Morgan Nelson)
5
+
6
+ # knife-crypt 0.0.2 (June 19, 2012) #
2
7
 
3
8
  * Declare compatibility with Chef v10.12.0
4
9
 
@@ -10,9 +10,21 @@ Scenario: Command List
10
10
  knife decrypt DATA (options)
11
11
  """
12
12
 
13
+ Scenario: Usage
14
+ When I run `knife decrypt`
15
+ Then the output should contain:
16
+ """
17
+ USAGE: knife decrypt DATA (options)
18
+ """
19
+ And the output should contain:
20
+ """
21
+ FATAL: You must specify data to decrypt
22
+ """
23
+ And the exit status should not be 0
24
+
13
25
  Scenario: Decrypting a String
14
26
  Given a knife configuration with en encrypted data bag secret "my secret"
15
- When I successfully run `knife decrypt e4ibEHAinGltDjYNQPV4rw==`
27
+ When I successfully run `knife decrypt -c .chef/knife.rb e4ibEHAinGltDjYNQPV4rw==`
16
28
  Then the stdout should contain exactly:
17
29
  """
18
30
  "foo"
@@ -21,7 +33,7 @@ Scenario: Decrypting a String
21
33
 
22
34
  Scenario: Decrypting an Array
23
35
  Given a knife configuration with en encrypted data bag secret "my secret"
24
- When I successfully run `knife decrypt 7wrizj9MAjmSVWWq69DUql0hNHFv7Hp/1tnQ/NJuD08=`
36
+ When I successfully run `knife decrypt -c .chef/knife.rb 7wrizj9MAjmSVWWq69DUql0hNHFv7Hp/1tnQ/NJuD08=`
25
37
  Then the stdout should contain exactly:
26
38
  """
27
39
  ["foo", "bar"]
@@ -30,7 +42,7 @@ Scenario: Decrypting an Array
30
42
 
31
43
  Scenario: Decrypting a Hash
32
44
  Given a knife configuration with en encrypted data bag secret "my secret"
33
- When I successfully run `knife decrypt nsXFeAANrmnBNu+QPfOHZFB5szSRA+Ezu94fmrJnNhk=`
45
+ When I successfully run `knife decrypt -c .chef/knife.rb nsXFeAANrmnBNu+QPfOHZFB5szSRA+Ezu94fmrJnNhk=`
34
46
  Then the stdout should contain exactly:
35
47
  """
36
48
  {"foo"=>{"bar"=>"baz"}}
@@ -10,29 +10,41 @@ Scenario: Command List
10
10
  knife encrypt DATA (options)
11
11
  """
12
12
 
13
- Scenario: Encrypting a String
14
- Given a knife configuration with en encrypted data bag secret "my secret"
15
- When I successfully run `knife encrypt '"foo"'`
16
- Then the stdout should contain exactly:
13
+ Scenario: Usage
14
+ When I run `knife encrypt`
15
+ Then the output should contain:
17
16
  """
18
- e4ibEHAinGltDjYNQPV4rw==
19
-
17
+ USAGE: knife encrypt DATA (options)
20
18
  """
19
+ And the output should contain:
20
+ """
21
+ FATAL: You must specify data to encrypt
22
+ """
23
+ And the exit status should not be 0
21
24
 
22
- Scenario: Encrypting an Array
25
+ Scenario: Encrypting a String
23
26
  Given a knife configuration with en encrypted data bag secret "my secret"
24
- When I successfully run `knife encrypt '["foo", "bar"]'`
25
- Then the stdout should contain exactly:
26
- """
27
- 7wrizj9MAjmSVWWq69DUql0hNHFv7Hp/1tnQ/NJuD08=
27
+ When I successfully run `knife encrypt -c .chef/knife.rb '"foo"' '"3EnQL7IItwtknz5p7TVlTQ=="'`
28
+ Then the stdout should be one of:
29
+ |chef_version|encrypted_string |
30
+ |0.10.10 |e4ibEHAinGltDjYNQPV4rw==\n |
31
+ |10.32.2 |e4ibEHAinGltDjYNQPV4rw==\n |
32
+ |11.12.4 |9ZgVemCtbgVxJO8gmP7y8oXDUaYAYxQzkI5acgHm4Kw=\n|
28
33
 
29
- """
34
+ Scenario: Encrypting an Array
35
+ Given a knife configuration with en encrypted data bag secret "my secret"
36
+ When I successfully run `knife encrypt -c .chef/knife.rb '["foo", "bar"]' '"3EnQL7IItwtknz5p7TVlTQ=="'`
37
+ Then the stdout should be one of:
38
+ |chef_version|encrypted_string |
39
+ |0.10.10 |7wrizj9MAjmSVWWq69DUql0hNHFv7Hp/1tnQ/NJuD08=\n|
40
+ |10.32.2 |7wrizj9MAjmSVWWq69DUql0hNHFv7Hp/1tnQ/NJuD08=\n|
41
+ |11.12.4 |9ZgVemCtbgVxJO8gmP7y8uGwkFOaRPd0s74enPmPLhg=\n|
30
42
 
31
43
  Scenario: Encrypting a Hash
32
44
  Given a knife configuration with en encrypted data bag secret "my secret"
33
- When I successfully run `knife encrypt '{"foo"=>{"bar"=>"baz"}}'`
34
- Then the stdout should contain exactly:
35
- """
36
- nsXFeAANrmnBNu+QPfOHZFB5szSRA+Ezu94fmrJnNhk=
37
-
38
- """
45
+ When I successfully run `knife encrypt -c .chef/knife.rb '{"foo"=>{"bar"=>"baz"}}' '"3EnQL7IItwtknz5p7TVlTQ=="'`
46
+ Then the stdout should be one of:
47
+ |chef_version|encrypted_string |
48
+ |0.10.10 |nsXFeAANrmnBNu+QPfOHZFB5szSRA+Ezu94fmrJnNhk=\n|
49
+ |10.32.2 |nsXFeAANrmnBNu+QPfOHZFB5szSRA+Ezu94fmrJnNhk=\n|
50
+ |11.12.4 |9ZgVemCtbgVxJO8gmP7y8qJWD5s+Mz808peVZbMfalYVzNylYukjQTf+h791\nOdSv\n|
@@ -0,0 +1,11 @@
1
+ Then(/^the stdout should be one of:$/) do |table|
2
+ latest_chef = "11.12.4"
3
+ # table is a Cucumber::Ast::Table
4
+ data = table.rows_hash
5
+ begin
6
+ puts "unknown Chef version, attempting #{latest_chef} encrypted string"
7
+ data[Chef::VERSION] = data[latest_chef]
8
+ end unless data[Chef::VERSION]
9
+
10
+ step("the stdout should contain exactly:", data[Chef::VERSION] ? data[Chef::VERSION] : data["11.12.4"])
11
+ end
@@ -1,2 +1,3 @@
1
1
  require "bundler/setup"
2
2
  require "aruba/cucumber"
3
+ require "chef/version"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec :development_group => :test, :path => ".."
4
+
5
+ gem "chef", "= 0.10.10"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec :development_group => :test, :path => ".."
4
+
5
+ gem "chef", "= 10.32.2"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec :development_group => :test, :path => ".."
4
+
5
+ gem "chef", "= 11.12.4"
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Knife::Crypt::VERSION
17
17
 
18
- gem.add_runtime_dependency "chef", ">= 0.10.8", "< 11.0.0"
18
+ gem.add_runtime_dependency "chef", ">= 0.10.8", "< 12.0.0"
19
19
 
20
20
  gem.add_development_dependency "aruba", "~> 0.4.11"
21
21
  gem.add_development_dependency "bundler", "~> 1.0"
@@ -6,9 +6,19 @@ class Chef
6
6
  banner "knife decrypt DATA (options)"
7
7
 
8
8
  def run
9
+ if @name_args.empty?
10
+ show_usage
11
+ ui.fatal "You must specify data to decrypt"
12
+ exit 1
13
+ end
14
+
9
15
  encrypted_value = @name_args[0]
10
16
  secret = Chef::EncryptedDataBagItem.load_secret
11
- decrypted_value = Chef::EncryptedDataBagItem.decrypt_value encrypted_value, secret
17
+ decrypted_value = if Chef::EncryptedDataBagItem.methods.include?(:decrypt_value)
18
+ Chef::EncryptedDataBagItem.decrypt_value encrypted_value, secret
19
+ else
20
+ Chef::EncryptedDataBagItem::Decryptor.for(encrypted_value, secret).for_decrypted_item
21
+ end
12
22
  puts decrypted_value.inspect
13
23
  end
14
24
  end
@@ -6,9 +6,20 @@ class Chef
6
6
  banner "knife encrypt DATA (options)"
7
7
 
8
8
  def run
9
+ if @name_args.empty?
10
+ show_usage
11
+ ui.fatal "You must specify data to encrypt"
12
+ exit 1
13
+ end
14
+
9
15
  decrypted_value = eval @name_args[0]
16
+ initialization_vector = @name_args[1]
10
17
  secret = Chef::EncryptedDataBagItem.load_secret
11
- encrypted_value = Chef::EncryptedDataBagItem.encrypt_value decrypted_value, secret
18
+ encrypted_value = if Chef::EncryptedDataBagItem.methods.include? :encrypt_value
19
+ Chef::EncryptedDataBagItem.encrypt_value(decrypted_value, secret)
20
+ else
21
+ Chef::EncryptedDataBagItem::Encryptor.new(decrypted_value, secret, initialization_vector).for_encrypted_item["encrypted_data"]
22
+ end
12
23
  puts encrypted_value
13
24
  end
14
25
  end
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Crypt
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,100 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-crypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Chris Griego
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-19 00:00:00.000000000 Z
11
+ date: 2014-05-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: chef
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.10.8
22
- - - <
20
+ - - "<"
23
21
  - !ruby/object:Gem::Version
24
- version: 11.0.0
22
+ version: 12.0.0
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 0.10.8
33
- - - <
30
+ - - "<"
34
31
  - !ruby/object:Gem::Version
35
- version: 11.0.0
32
+ version: 12.0.0
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: aruba
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ~>
37
+ - - "~>"
42
38
  - !ruby/object:Gem::Version
43
39
  version: 0.4.11
44
40
  type: :development
45
41
  prerelease: false
46
42
  version_requirements: !ruby/object:Gem::Requirement
47
- none: false
48
43
  requirements:
49
- - - ~>
44
+ - - "~>"
50
45
  - !ruby/object:Gem::Version
51
46
  version: 0.4.11
52
47
  - !ruby/object:Gem::Dependency
53
48
  name: bundler
54
49
  requirement: !ruby/object:Gem::Requirement
55
- none: false
56
50
  requirements:
57
- - - ~>
51
+ - - "~>"
58
52
  - !ruby/object:Gem::Version
59
53
  version: '1.0'
60
54
  type: :development
61
55
  prerelease: false
62
56
  version_requirements: !ruby/object:Gem::Requirement
63
- none: false
64
57
  requirements:
65
- - - ~>
58
+ - - "~>"
66
59
  - !ruby/object:Gem::Version
67
60
  version: '1.0'
68
61
  - !ruby/object:Gem::Dependency
69
62
  name: cucumber
70
63
  requirement: !ruby/object:Gem::Requirement
71
- none: false
72
64
  requirements:
73
- - - ~>
65
+ - - "~>"
74
66
  - !ruby/object:Gem::Version
75
67
  version: 1.2.0
76
68
  type: :development
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
- none: false
80
71
  requirements:
81
- - - ~>
72
+ - - "~>"
82
73
  - !ruby/object:Gem::Version
83
74
  version: 1.2.0
84
75
  - !ruby/object:Gem::Dependency
85
76
  name: rake
86
77
  requirement: !ruby/object:Gem::Requirement
87
- none: false
88
78
  requirements:
89
- - - ~>
79
+ - - "~>"
90
80
  - !ruby/object:Gem::Version
91
81
  version: 0.9.0
92
82
  type: :development
93
83
  prerelease: false
94
84
  version_requirements: !ruby/object:Gem::Requirement
95
- none: false
96
85
  requirements:
97
- - - ~>
86
+ - - "~>"
98
87
  - !ruby/object:Gem::Version
99
88
  version: 0.9.0
100
89
  description: Commands for Chef's Knife Command to Encrypt and Decrypt Data
@@ -104,9 +93,9 @@ executables: []
104
93
  extensions: []
105
94
  extra_rdoc_files: []
106
95
  files:
107
- - .gitignore
108
- - .rvmrc
109
- - .travis.yml
96
+ - ".gitignore"
97
+ - ".ruby-version"
98
+ - ".travis.yml"
110
99
  - CHANGELOG.md
111
100
  - Gemfile
112
101
  - Guardfile
@@ -117,43 +106,41 @@ files:
117
106
  - features/decrypt.feature
118
107
  - features/encrypt.feature
119
108
  - features/step_definitions/knife_config_steps.rb
109
+ - features/step_definitions/knife_encryption_steps.rb
120
110
  - features/support/env.rb
111
+ - gemfiles/chef_10_10.gemfile
112
+ - gemfiles/chef_10_32.gemfile
113
+ - gemfiles/chef_11.gemfile
121
114
  - knife-crypt.gemspec
122
115
  - lib/chef/knife/decrypt.rb
123
116
  - lib/chef/knife/encrypt.rb
124
117
  - lib/knife-crypt/version.rb
125
118
  homepage: https://github.com/cgriego/knife-crypt
126
119
  licenses: []
120
+ metadata: {}
127
121
  post_install_message:
128
122
  rdoc_options: []
129
123
  require_paths:
130
124
  - lib
131
125
  required_ruby_version: !ruby/object:Gem::Requirement
132
- none: false
133
126
  requirements:
134
- - - ! '>='
127
+ - - ">="
135
128
  - !ruby/object:Gem::Version
136
129
  version: '0'
137
- segments:
138
- - 0
139
- hash: -1267211087425992544
140
130
  required_rubygems_version: !ruby/object:Gem::Requirement
141
- none: false
142
131
  requirements:
143
- - - ! '>='
132
+ - - ">="
144
133
  - !ruby/object:Gem::Version
145
134
  version: '0'
146
- segments:
147
- - 0
148
- hash: -1267211087425992544
149
135
  requirements: []
150
136
  rubyforge_project:
151
- rubygems_version: 1.8.21
137
+ rubygems_version: 2.2.2
152
138
  signing_key:
153
- specification_version: 3
139
+ specification_version: 4
154
140
  summary: Commands for Chef's Knife Command to Encrypt and Decrypt Data
155
141
  test_files:
156
142
  - features/decrypt.feature
157
143
  - features/encrypt.feature
158
144
  - features/step_definitions/knife_config_steps.rb
145
+ - features/step_definitions/knife_encryption_steps.rb
159
146
  - features/support/env.rb
data/.rvmrc DELETED
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
- # development environment upon cd'ing into the directory
5
-
6
- # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
7
- # Only full ruby name is supported here, for short names use:
8
- # echo "rvm use 1.9.3" > .rvmrc
9
- environment_id="ruby-1.9.3@knife-crypt"
10
-
11
- # Uncomment the following lines if you want to verify rvm version per project
12
- # rvmrc_rvm_version="1.12.2 (stable)" # 1.10.1 seams as a safe start
13
- # eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
14
- # echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
15
- # return 1
16
- # }
17
-
18
- # First we attempt to load the desired environment directly from the environment
19
- # file. This is very fast and efficient compared to running through the entire
20
- # CLI and selector. If you want feedback on which environment was used then
21
- # insert the word 'use' after --create as this triggers verbose mode.
22
- if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
23
- && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
24
- then
25
- \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
26
- [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
27
- \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
28
- if [[ $- == *i* ]] # check for interactive shells
29
- then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green
30
- else echo "Using: $GEM_HOME" # don't use colors in non-interactive shells
31
- fi
32
- else
33
- # If the environment file has not yet been created, use the RVM CLI to select.
34
- rvm --create use "$environment_id" || {
35
- echo "Failed to create RVM environment '${environment_id}'."
36
- return 1
37
- }
38
- fi
39
-
40
- # If you use bundler, this might be useful to you:
41
- # if [[ -s Gemfile ]] && {
42
- # ! builtin command -v bundle >/dev/null ||
43
- # builtin command -v bundle | grep $rvm_path/bin/bundle >/dev/null
44
- # }
45
- # then
46
- # printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
47
- # gem install bundler
48
- # fi
49
- # if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
50
- # then
51
- # bundle install | grep -vE '^Using|Your bundle is complete'
52
- # fi