puppet-decrypt 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 248058bd4e4965701c01ff8037984487ea5db344
4
- data.tar.gz: bfd65eec21ba36b8c3d8081e3f442c4f1adc980c
3
+ metadata.gz: 4c098cca8fcd1228c7d2e82d7b8615f7189e77e8
4
+ data.tar.gz: b2ddb9f7aaa99af9d68812a7d86a95c7d04da32e
5
5
  SHA512:
6
- metadata.gz: e9b7548c7c93147d6aa8a81f4a9a1cf1374ed5cdb18fc4a0ad50530fa956ed316cba19cad58fb0f7e84609a9d04b1cefb262a549a807761cffb4a47a46e25a11
7
- data.tar.gz: c2d3f32d32879c01aba7ca764280ec2422e81d3c69841bc256f0333ff90dfa3c7e6ef37341f8f6e593819cf4f5aa27b078bd643c1078be0afca10aae4dcbc699
6
+ metadata.gz: b19f454ff00dd36f2f83848c1a4be5df1ec6065b6dcd487364da4c981cce7350c6789862092df40681bcefaa2363e46ee8d4735cb751abec3b6e7400d4a6b0c2
7
+ data.tar.gz: 45b6964e742c45152804e4d6eac02324702515dcefc49ce87cf7a0eeb0268b744229ae2aec6f99b0a84ac5146de98da15519d6edb31e94c282b4af7c162f4be7
data/.travis.yml CHANGED
@@ -1,10 +1,21 @@
1
1
  language: ruby
2
+ bundler_args: --without debugging
2
3
  rvm:
4
+ - 1.8.7
3
5
  - 1.9.3
4
- - 1.9.2
5
6
  - jruby-19mode
6
7
  - 2.0.0
8
+ - 2.1.0
7
9
  gemfile:
8
10
  - Gemfile
9
11
  - bundles/puppet_3_0.gemfile
10
12
  - bundles/puppet_2_7.gemfile
13
+ - bundles/puppet_edge.gemfile
14
+ matrix:
15
+ exclude:
16
+ - rvm: 1.8.7
17
+ gemfile: bundles/puppet_edge.gemfile
18
+ - rvm: 2.1.0
19
+ gemfile: bundles/puppet_3_0.gemfile
20
+ - rvm: 2.1.0
21
+ gemfile: bundles/puppet_2_7.gemfile
data/ChangeLog.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.1.1 (Jan 24, 2014)
2
+
3
+ Enhancements:
4
+ - Salting to protect against dictionary and rainbow table attacks.
5
+
6
+ Bugfixes:
7
+ - Fix Ruby 1.8.7 support.
8
+
1
9
  ## 0.1.0 (July 10, 2013)
2
10
 
3
11
  Features:
data/Gemfile CHANGED
@@ -1,5 +1,16 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in puppet-decrypt.gemspec
4
- gem 'puppet'
5
4
  gemspec
5
+
6
+ # Not in the gemspec because we're testing multiple versions with appraisal.
7
+ gem 'puppet'
8
+
9
+ # Things we don't want on Travis
10
+ group :debugging do
11
+ # just for pushing documentation, requires ruby 1.9+
12
+ gem 'relish'
13
+ gem 'pry'
14
+ gem 'pry-nav'
15
+ end
16
+
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in puppet-decrypt.gemspec
4
+ gem 'puppet', :git => 'https://github.com/puppetlabs/puppet'
5
+ gemspec(:path => '../')
@@ -1,6 +1,6 @@
1
1
  Feature: Puppet works
2
2
 
3
- Scenario: Default test
3
+ Scenario: Unsalted (legacy) key
4
4
  Given I have the following hiera data:
5
5
  """
6
6
  ---
@@ -13,11 +13,24 @@ Feature: Puppet works
13
13
  """
14
14
  Then the output should include "Decrypted: max"
15
15
 
16
+ Scenario: Default test
17
+ Given I have the following hiera data:
18
+ """
19
+ ---
20
+ db_password: ENC[HOz0/aHCjJTAUlEbM/pqMQ==:QZy2oTvQNhwFMmOARn+Jlw==:aUY1NjBqamp6RWs1UkYvVjVULzNvdz09]
21
+ """
22
+ When I execute this puppet manifest:
23
+ """
24
+ $password = decrypt(hiera('db_password'))
25
+ notice("Decrypted: $password")
26
+ """
27
+ Then the output should include "Decrypted: max"
28
+
16
29
  Scenario: Overriden key (string)
17
30
  Given I have the following hiera data:
18
31
  """
19
32
  ---
20
- db_password: ENC:alt_key[c4S4hMCDv1b7FkZgOBRTOA==]
33
+ db_password: ENC:alt_key[KgLJnDVF9VeTGGU/vG2KjQ==:NiLhgUn4JL07DI9trGSK8g==:YlVhZDhDSEZsSDV6RnBOdm1FMmVtQT09]
21
34
  """
22
35
  When I execute this puppet manifest:
23
36
  """
@@ -31,7 +44,7 @@ Feature: Puppet works
31
44
  """
32
45
  ---
33
46
  db_password:
34
- value: 'ENC[G6MjBDDFcapYLaKBFJvPSg==]'
47
+ value: 'ENC[AVdi08NXUveKStMSAH4kMQ==:EAHeMe3TvK33gjnDDHV5rQ==:cndoVVBhMWdXQW5HVSsxWDN4OUtRZz09]'
35
48
  secretkey: 'features/fixtures/other_secretkeys/secondary_key'
36
49
  """
37
50
  When I execute this puppet manifest:
@@ -40,4 +53,4 @@ Feature: Puppet works
40
53
  $password = decrypt(hiera_hash('db_password'))
41
54
  notice("Decrypted: $password")
42
55
  """
43
- Then the output should include "Decrypted: overridden"
56
+ Then the output should include "Decrypted: overridden"
@@ -12,7 +12,7 @@ When /^I execute this puppet manifest:$/ do |manifest|
12
12
  begin
13
13
  file.write(manifest)
14
14
  file.close
15
- ENV['FACTER_HIERA_FILE'] = File.basename(hierafile, '.yaml')
15
+ ENV['FACTER_HIERA_FILE'] = File.basename(hierafile.path, '.yaml')
16
16
  ENV['PUPPET_DECRYPT_KEYDIR'] = 'features/fixtures/secretkeys'
17
17
  puppet_version = `bundle exec puppet --version`
18
18
  puppet_command = "bundle exec puppet apply --noop #{file.path}"
@@ -1,9 +1,13 @@
1
1
  require 'puppet-decrypt/version'
2
+ require 'puppet-decrypt/key_loader'
2
3
  require 'puppet-decrypt/decryptor'
3
4
  require 'encryptor'
4
5
  require 'base64'
5
6
 
6
7
  module Puppet
7
8
  module Decrypt
9
+ def self.key_loader
10
+ @key_loader ||= Puppet::Decrypt::KeyLoader.new
11
+ end
8
12
  end
9
13
  end
@@ -2,7 +2,7 @@ module Puppet
2
2
  module Decrypt
3
3
 
4
4
  class Decryptor
5
- ENCRYPTED_PATTERN = /^ENC:?(?<key>\w*)\[(?<value>.*)\]$/
5
+ ENCRYPTED_PATTERN = /^ENC:?(\w*)\[(.*)\]$/
6
6
  KEY_DIR = ENV['PUPPET_DECRYPT_KEYDIR'] || '/etc/puppet-decrypt'
7
7
  DEFAULT_KEY = 'encryptor_secret_key'
8
8
  DEFAULT_FILE = File.join(KEY_DIR, DEFAULT_KEY)
@@ -24,31 +24,40 @@ module Puppet
24
24
  else
25
25
  match = value.match(ENCRYPTED_PATTERN)
26
26
  if match
27
- value = match[:value]
27
+ value = match[2]
28
28
  end
29
29
  end
30
30
  if match
31
- value = strict_decode64(value)
32
- value = value.decrypt(:key => secret_key_digest)
31
+ value, iv, salt = value.split(':').map{|s| strict_decode64 s }
32
+ if iv && salt
33
+ value = value.decrypt(:key => secret_key_digest, :iv => iv, :salt => salt)
34
+ else
35
+ $stderr.puts "Warning: re-encrypt with puppet-crypt to use salted passwords"
36
+ value = value.decrypt(:key => secret_key_digest)
37
+ end
33
38
  end
34
39
  value
35
40
  end
36
41
 
37
- def encrypt(value, secret_key_file = nil)
42
+ def encrypt(value, secret_key_file, salt, iv)
38
43
  secret_key_file ||= secret_key_for value
39
44
  secret_key_digest = digest_from secret_key_file
40
- result = value.encrypt(:key => secret_key_digest)
41
- encrypted_value = strict_encode64(result).strip
45
+ result = value.encrypt(:key => secret_key_digest, :iv => iv, :salt => salt)
46
+ encrypted_value = [result, iv, salt].map{|v| strict_encode64(v).strip }.join ':'
42
47
  encrypted_value = "ENC[#{encrypted_value}]" unless @raw
43
- raise "Value can't be encrypted properly" unless decrypt(encrypted_value, secret_key_file) == value
48
+ raise "Value can't be encrypted properly with salt #{salt}" unless decrypt(encrypted_value, secret_key_file) == value
44
49
  encrypted_value
45
50
  end
46
51
 
47
52
  private
53
+ def load_key(secret_key_file)
54
+ Puppet::Decrypt.key_loader.load_key secret_key_file
55
+ end
56
+
48
57
  def secret_key_for(value)
49
58
  match = value.match(ENCRYPTED_PATTERN)
50
59
  if match
51
- key = match[:key]
60
+ key = match[1]
52
61
  key = DEFAULT_KEY if key.empty?
53
62
  end
54
63
  key ||= DEFAULT_KEY
@@ -56,8 +65,7 @@ module Puppet
56
65
  end
57
66
 
58
67
  def digest_from(secret_key_file)
59
- raise "Secret key file: #{secret_key_file} is not readable!" unless File.readable?(secret_key_file)
60
- secret_key = File.open(secret_key_file, &:readline).chomp
68
+ secret_key = load_key secret_key_file
61
69
  Digest::SHA256.hexdigest(secret_key)
62
70
  end
63
71
 
@@ -0,0 +1,10 @@
1
+ module Puppet
2
+ module Decrypt
3
+ class KeyLoader
4
+ def load_key(secret_key_file)
5
+ raise "Secret key file: #{secret_key_file} is not readable!" unless File.readable?(secret_key_file)
6
+ secret_key = File.open(secret_key_file, &:readline).chomp
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,5 +1,5 @@
1
1
  module Puppet
2
2
  module Decrypt
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -23,6 +23,14 @@ Puppet::Face.define(:crypt, Puppet::Decrypt::VERSION) do
23
23
  summary "The path to the secret key file (default: #{Puppet::Decrypt::Decryptor::DEFAULT_FILE}"
24
24
  end
25
25
 
26
+ option "--iv IV" do
27
+ summary "The initialization vector to use during encryption (default is random)"
28
+ end
29
+
30
+ option "--salt SALT" do
31
+ summary "The salt to use during encryption (default is random)"
32
+ end
33
+
26
34
  action :encrypt do
27
35
  summary 'Encrypt a secret value.'
28
36
  arguments "<plaintext_secret>"
@@ -30,8 +38,10 @@ Puppet::Face.define(:crypt, Puppet::Decrypt::VERSION) do
30
38
  This action encrypts a value using the secret key.
31
39
  EOT
32
40
  when_invoked do |plaintext_secret, options|
41
+ iv = options.delete(:iv) || OpenSSL::Cipher::Cipher.new('aes-256-cbc').random_iv
42
+ salt = options.delete(:salt) || SecureRandom.base64
33
43
  secretkey = options[:secretkey]
34
- Puppet::Decrypt::Decryptor.new(options).encrypt(plaintext_secret, secretkey)
44
+ Puppet::Decrypt::Decryptor.new(options).encrypt(plaintext_secret, secretkey, salt, iv)
35
45
  end
36
46
  end
37
47
 
@@ -27,13 +27,10 @@ This was done to more easily support multiple keys. If you are upgrading from a
27
27
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
28
28
  gem.require_paths = ["lib"]
29
29
 
30
- gem.add_dependency('encryptor')
30
+ gem.add_dependency('encryptor', '~> 1.3')
31
31
  gem.add_development_dependency('rake')
32
32
  gem.add_development_dependency('cucumber')
33
- gem.add_development_dependency('relish')
34
33
  gem.add_development_dependency('rspec')
35
34
  gem.add_development_dependency('rspec-puppet')
36
35
  gem.add_development_dependency('puppetlabs_spec_helper')
37
- gem.add_development_dependency('pry')
38
- gem.add_development_dependency('pry-nav')
39
36
  end
@@ -2,24 +2,48 @@
2
2
  require 'spec_helper'
3
3
  require 'puppet/face'
4
4
 
5
+ MINIMUM_IV_LENGTH = 20
5
6
  describe Puppet::Face[:crypt, :current] do
7
+ let(:insecure_opts) do
8
+ { :salt => '1234567890', :iv => '5'*20 }
9
+ end
10
+ # Values above, encoded
11
+ let(:base64_salt) { 'MTIzNDU2Nzg5MA==' }
12
+ let(:base64_iv) { 'NTU1NTU1NTU1NTU1NTU1NTU1NTU=' }
6
13
  before :all do
7
14
  mock_secret_key(Puppet::Decrypt::Decryptor::DEFAULT_FILE, 'masterkey')
8
15
  end
9
16
 
10
17
  describe 'encrypt' do
11
18
  describe 'should encrypt a value' do
19
+ it 'is decryptable with minimum args' do
20
+ encrypted = subject.encrypt('flabberghaster')
21
+ subject.decrypt(encrypted).should == 'flabberghaster'
22
+ end
23
+ it 'is decryptable with minimum args with a salt' do
24
+ salt = SecureRandom.base64
25
+ encrypted = subject.encrypt('flabberghaster', {:salt => salt})
26
+ subject.decrypt(encrypted).should == 'flabberghaster'
27
+ end
28
+ it 'is decryptable with problematic salt (regexp chars)' do
29
+ salt = 'R8STny+9cq03ujQGiKDd9w=='
30
+ encrypted = subject.encrypt('flabberghaster', {:salt => salt})
31
+ subject.decrypt(encrypted).should == 'flabberghaster'
32
+ end
12
33
  it 'with ENC[...]' do
13
- subject.encrypt('flabberghaster').should == 'ENC[3xzy8fiXlaJqv3m+aXIJNA==]'
34
+ expected_value = "ENC[7u523Z+PpqSm58+BeiN4qw==:#{base64_iv}:#{base64_salt}]"
35
+ subject.encrypt('flabberghaster', insecure_opts).should == expected_value
14
36
  end
15
37
 
16
38
  it 'with --raw' do
17
- subject.encrypt('flabberghaster', {:raw => true}).should == '3xzy8fiXlaJqv3m+aXIJNA=='
39
+ expected_value = "7u523Z+PpqSm58+BeiN4qw==:#{base64_iv}:#{base64_salt}"
40
+ subject.encrypt('flabberghaster', {:raw => true}.merge(insecure_opts)).should == expected_value
18
41
  end
19
42
 
20
43
  it 'with --secretkey' do
21
44
  mock_secret_key('/etc/another_key', 'anotherkey')
22
- subject.encrypt('flabberghaster', {:secretkey => '/etc/another_key'}).should == 'ENC[8MaZYHPdj9IpnzcuBLlMdg==]'
45
+ expected_value = "ENC[81crlXmuzSnld3+4YUkQYg==:#{base64_iv}:#{base64_salt}]"
46
+ subject.encrypt('flabberghaster', {:secretkey => '/etc/another_key'}.merge(insecure_opts)).should == expected_value
23
47
  end
24
48
  end
25
49
  end
@@ -0,0 +1,24 @@
1
+ module Puppet
2
+ module Decrypt
3
+ def self.key_loader=(key_loader)
4
+ @key_loader = key_loader
5
+ end
6
+
7
+ class FakeKeyLoader
8
+ def initialize
9
+ @secrets = {}
10
+ end
11
+
12
+ def add_secret(secret_key_file, secret_key)
13
+ @secrets[secret_key_file] = secret_key
14
+ end
15
+
16
+ def load_key(secret_key_file)
17
+ raise "Secret key file: #{secret_key_file} is not readable!" unless @secrets.has_key? secret_key_file
18
+ secret_key = @secrets[secret_key_file]
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ Puppet::Decrypt.key_loader = Puppet::Decrypt::FakeKeyLoader.new
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'rspec-puppet'
3
+ require 'puppet-decrypt/fake_key_loader'
3
4
  require 'puppet-decrypt'
4
5
  require 'rspec/mocks'
5
6
 
7
+ Puppet::Decrypt.key_loader = Puppet::Decrypt::FakeKeyLoader.new
8
+
6
9
  module SecretKeyHelper
7
10
  def mock_secret_key(filename, secret)
8
- File.should_receive(:readable?).with(filename).and_return(true)
9
- File.should_receive(:open).with(filename).and_return(secret)
11
+ Puppet::Decrypt.key_loader.add_secret(filename, secret)
10
12
  end
11
13
  end
12
14
 
metadata CHANGED
@@ -1,139 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-decrypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mlincoln
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-12 00:00:00.000000000 Z
11
+ date: 2014-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: encryptor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: cucumber
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: relish
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '>='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '>='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
61
  version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '>='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rspec-puppet
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - '>='
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - '>='
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: puppetlabs_spec_helper
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: pry
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: pry-nav
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
87
+ - - ">="
130
88
  - !ruby/object:Gem::Version
131
89
  version: '0'
132
90
  type: :development
133
91
  prerelease: false
134
92
  version_requirements: !ruby/object:Gem::Requirement
135
93
  requirements:
136
- - - '>='
94
+ - - ">="
137
95
  - !ruby/object:Gem::Version
138
96
  version: '0'
139
97
  description: A gem for encrypting/decrypting secret values for use with Puppet
@@ -143,10 +101,10 @@ executables: []
143
101
  extensions: []
144
102
  extra_rdoc_files: []
145
103
  files:
146
- - .gitignore
147
- - .rspec
148
- - .rvmrc
149
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".rvmrc"
107
+ - ".travis.yml"
150
108
  - ChangeLog.md
151
109
  - Gemfile
152
110
  - LICENSE.txt
@@ -155,6 +113,7 @@ files:
155
113
  - Rakefile
156
114
  - bundles/puppet_2_7.gemfile
157
115
  - bundles/puppet_3_0.gemfile
116
+ - bundles/puppet_edge.gemfile
158
117
  - features/fixtures/data/overridden_secret_key.yaml
159
118
  - features/fixtures/data/simple.yaml
160
119
  - features/fixtures/hiera.yaml
@@ -168,6 +127,7 @@ files:
168
127
  - features/support/env.rb
169
128
  - lib/puppet-decrypt.rb
170
129
  - lib/puppet-decrypt/decryptor.rb
130
+ - lib/puppet-decrypt/key_loader.rb
171
131
  - lib/puppet-decrypt/version.rb
172
132
  - lib/puppet/application/crypt.rb
173
133
  - lib/puppet/face/crypt.rb
@@ -175,6 +135,7 @@ files:
175
135
  - puppet-decrypt.gemspec
176
136
  - spec/faces/crypt_spec.rb
177
137
  - spec/functions/decrypt_spec.rb
138
+ - spec/puppet-decrypt/fake_key_loader.rb
178
139
  - spec/spec_helper.rb
179
140
  homepage: https://github.com/maxlinc/puppet-decrypt
180
141
  licenses: []
@@ -192,17 +153,17 @@ require_paths:
192
153
  - lib
193
154
  required_ruby_version: !ruby/object:Gem::Requirement
194
155
  requirements:
195
- - - '>='
156
+ - - ">="
196
157
  - !ruby/object:Gem::Version
197
158
  version: 1.9.0
198
159
  required_rubygems_version: !ruby/object:Gem::Requirement
199
160
  requirements:
200
- - - '>='
161
+ - - ">="
201
162
  - !ruby/object:Gem::Version
202
163
  version: '0'
203
164
  requirements: []
204
165
  rubyforge_project:
205
- rubygems_version: 2.0.4
166
+ rubygems_version: 2.2.0
206
167
  signing_key:
207
168
  specification_version: 4
208
169
  summary: A shared secret strategy that works with any data source
@@ -220,4 +181,5 @@ test_files:
220
181
  - features/support/env.rb
221
182
  - spec/faces/crypt_spec.rb
222
183
  - spec/functions/decrypt_spec.rb
184
+ - spec/puppet-decrypt/fake_key_loader.rb
223
185
  - spec/spec_helper.rb