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 +4 -4
- data/.travis.yml +12 -1
- data/ChangeLog.md +8 -0
- data/Gemfile +12 -1
- data/bundles/puppet_edge.gemfile +5 -0
- data/features/hiera.feature +17 -4
- data/features/step_definitions/puppet_steps.rb +1 -1
- data/lib/puppet-decrypt.rb +4 -0
- data/lib/puppet-decrypt/decryptor.rb +19 -11
- data/lib/puppet-decrypt/key_loader.rb +10 -0
- data/lib/puppet-decrypt/version.rb +1 -1
- data/lib/puppet/face/crypt.rb +11 -1
- data/puppet-decrypt.gemspec +1 -4
- data/spec/faces/crypt_spec.rb +27 -3
- data/spec/puppet-decrypt/fake_key_loader.rb +24 -0
- data/spec/spec_helper.rb +4 -2
- metadata +27 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c098cca8fcd1228c7d2e82d7b8615f7189e77e8
|
4
|
+
data.tar.gz: b2ddb9f7aaa99af9d68812a7d86a95c7d04da32e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
+
|
data/features/hiera.feature
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Feature: Puppet works
|
2
2
|
|
3
|
-
Scenario:
|
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[
|
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[
|
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}"
|
data/lib/puppet-decrypt.rb
CHANGED
@@ -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:?(
|
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[
|
27
|
+
value = match[2]
|
28
28
|
end
|
29
29
|
end
|
30
30
|
if match
|
31
|
-
value =
|
32
|
-
|
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
|
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(
|
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[
|
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
|
-
|
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
|
data/lib/puppet/face/crypt.rb
CHANGED
@@ -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
|
|
data/puppet-decrypt.gemspec
CHANGED
@@ -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
|
data/spec/faces/crypt_spec.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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:
|
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: '
|
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: '
|
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
|
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
|